<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='MINMAX_FIND_UTILITY'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MINMAX_FIND_UTILITY' TARGET='top_target'><IMG SRC="../../gif/bar_purple.gif" border=0></A>

MODULE MinMax_Find_Utility 3,21

  USE Type_Kinds, ONLY: fp
  IMPLICIT NONE

  PRIVATE
  PUBLIC :: MinVal_Find
  PUBLIC :: MaxVal_Find
  PUBLIC :: MaxDiff_Find
  
  ! Public
<A NAME='MINVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MINVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  INTERFACE MinVal_Find
    MODULE PROCEDURE
    MODULE PROCEDURE
  END INTERFACE MinVal_Find
  
<A NAME='MAXVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MAXVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  INTERFACE MaxVal_Find
    MODULE PROCEDURE
    MODULE PROCEDURE
  END INTERFACE MaxVal_Find

<A NAME='MAXDIFF_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MAXDIFF_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  INTERFACE MaxDiff_Find 8
    MODULE PROCEDURE
    MODULE PROCEDURE
  END INTERFACE MaxDiff_Find

  ! Private
<A NAME='MINLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MINLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  INTERFACE MinLoc_Find
    MODULE PROCEDURE
    MODULE PROCEDURE
  END INTERFACE MinLoc_Find
  
<A NAME='MAXLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#MAXLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  INTERFACE MaxLoc_Find
    MODULE PROCEDURE
    MODULE PROCEDURE
  END INTERFACE MaxLoc_Find
  

CONTAINS


<A NAME='INTEGER_MINVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#INTEGER_MINVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION integer_MinVal_Find(array) RESULT(minimum_value) 1
    INTEGER, INTENT(IN) :: array(:)
    INTEGER :: minimum_value
    INTEGER :: idx  
    idx = MinLoc_Find(array)
    minimum_value = SIGN(array(idx),array(idx))
  END FUNCTION integer_MinVal_Find
  
<A NAME='INTEGER_MAXVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#INTEGER_MAXVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION integer_MaxVal_Find(array) RESULT(maximum_value) 1
    INTEGER, INTENT(IN) :: array(:)
    INTEGER :: maximum_value
    INTEGER :: idx  
    idx = MaxLoc_Find(array)
    maximum_value = SIGN(array(idx),array(idx))
  END FUNCTION integer_MaxVal_Find
  
<A NAME='INTEGER_MAXDIFF_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#INTEGER_MAXDIFF_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  SUBROUTINE integer_MaxDiff_Find(x,y, xval,yval,diff) 1
    INTEGER, INTENT(IN) :: x(:), y(:)
    INTEGER :: xval, yval, diff
    INTEGER :: idx  
    idx = MaxLoc_Find(x-y)
    xval = x(idx)
    yval = y(idx)
    diff = xval - yval
  END SUBROUTINE integer_MaxDiff_Find

<A NAME='REAL_MINVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#REAL_MINVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION real_MinVal_Find(array) RESULT(minimum_value) 1
    REAL(fp), INTENT(IN) :: array(:)
    REAL(fp) :: minimum_value
    INTEGER :: idx  
    idx = MinLoc_Find(array)
    minimum_value = SIGN(array(idx),array(idx))
  END FUNCTION real_MinVal_Find
  
<A NAME='REAL_MAXVAL_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#REAL_MAXVAL_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION real_MaxVal_Find(array) RESULT(maximum_value) 1
    REAL(fp), INTENT(IN) :: array(:)
    REAL(fp) :: maximum_value
    INTEGER :: idx  
    idx = MaxLoc_Find(array)
    maximum_value = SIGN(array(idx),array(idx))
  END FUNCTION real_MaxVal_Find

<A NAME='REAL_MAXDIFF_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#REAL_MAXDIFF_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

  SUBROUTINE real_MaxDiff_Find(x,y, xval,yval,diff) 1
    REAL(fp), INTENT(IN) :: x(:), y(:)
    REAL(fp) :: xval, yval, diff
    INTEGER :: idx  
    idx = MaxLoc_Find(x-y)
    xval = x(idx)
    yval = y(idx)
    diff = xval - yval
  END SUBROUTINE real_MaxDiff_Find


! PRIVATE PROCEDURES

<A NAME='INTEGER_MINLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#INTEGER_MINLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION integer_MinLoc_Find(array) RESULT(idx) 1
    INTEGER, INTENT(IN) :: array(:)
    INTEGER :: idx  
    idx = MINLOC(ABS(array),DIM=1)
  END FUNCTION integer_MinLoc_Find
  
<A NAME='INTEGER_MAXLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#INTEGER_MAXLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION integer_MaxLoc_Find(array) RESULT(idx) 1
    INTEGER, INTENT(IN) :: array(:)
    INTEGER :: idx  
    idx = MAXLOC(ABS(array),DIM=1)
  END FUNCTION integer_MaxLoc_Find
  
<A NAME='REAL_MINLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#REAL_MINLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION real_MinLoc_Find(array) RESULT(idx) 1
    REAL(fp), INTENT(IN) :: array(:)
    INTEGER :: idx  
    idx = MINLOC(ABS(array),DIM=1)
  END FUNCTION real_MinLoc_Find
  
<A NAME='REAL_MAXLOC_FIND'><A href='../../html_code/crtm/MinMax_Find_Utility.f90.html#REAL_MAXLOC_FIND' TARGET='top_target'><IMG SRC="../../gif/bar_green.gif" border=0></A>

  FUNCTION real_MaxLoc_Find(array) RESULT(idx) 1
    REAL(fp), INTENT(IN) :: array(:)
    INTEGER :: idx  
    idx = MAXLOC(ABS(array),DIM=1)
  END FUNCTION real_MaxLoc_Find
  
  
END MODULE MinMax_Find_Utility