1 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
    2 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../generics.fypp" 1 
   11 # 57 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../generics.fypp" 
   12 # 2 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 2 
   13 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../instrumentation.fypp" 1 
   14 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../subr_list.fypp" 1 
   23 # 926 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../subr_list.fypp" 
   24 # 2 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../instrumentation.fypp" 2 
   33 # 112 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/../instrumentation.fypp" 
   34 # 3 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 2 
   55 # 24 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   58 # 24 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   61 # 27 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   64 # 30 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   66 # 30 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   68 # 32 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   71 # 35 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   73 # 35 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   75 # 37 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   86 # 48 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
   96 integer, 
intent(in) :: n
 
   97 integer(kind_int),
intent(inout) :: list(n)
 
   98 integer,
intent(out) :: order(n)
 
   99 logical,
intent(in),
optional :: order_list
 
  103 integer(kind_int),
allocatable :: list_tmp(:)
 
  104 logical :: lorder_list
 
  108 if (
present(order_list)) lorder_list = order_list
 
  115 if (lorder_list) 
then 
  123    allocate(list_tmp(n))
 
  139 # 48 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  149 integer, 
intent(in) :: n
 
  151 integer,
intent(out) :: order(n)
 
  152 logical,
intent(in),
optional :: order_list
 
  156 real(
kind_real),
allocatable :: list_tmp(:)
 
  157 logical :: lorder_list
 
  161 if (
present(order_list)) lorder_list = order_list
 
  168 if (lorder_list) 
then 
  176    allocate(list_tmp(n))
 
  192 # 101 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  194 # 103 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  204 integer, 
intent(in) :: n
 
  205 integer(kind_int),
intent(inout) :: list1(n)
 
  206 integer(kind_int),
intent(inout) :: list2(n)
 
  207 integer,
intent(out) :: order(n)
 
  208 logical,
intent(in),
optional :: order_list
 
  211 integer :: i_s,i_e,ntmp,i
 
  212 integer,
allocatable :: order_tmp(:)
 
  213 integer(kind_int) :: list1_tmp(n),list2_tmp(n)
 
  214 logical :: lorder_list,chain,diff
 
  218 if (
present(order_list)) lorder_list = order_list
 
  235 list2_tmp = list2(order)
 
  244       diff = 
inf(list1_tmp(i_s),list1_tmp(i_e))
 
  251          allocate(order_tmp(ntmp))
 
  259          call quick_sort(ntmp,1,ntmp,list2_tmp(i_s:i_e-1),order_tmp)
 
  265          order_tmp = order_tmp+i_s-1
 
  268          order(i_s:i_e-1) = order(order_tmp)
 
  274          deallocate(order_tmp)
 
  285 if (lorder_list) 
then 
  292 # 103 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  302 integer, 
intent(in) :: n
 
  303 real(
kind_real),
intent(inout) :: list1(n)
 
  304 real(
kind_real),
intent(inout) :: list2(n)
 
  305 integer,
intent(out) :: order(n)
 
  306 logical,
intent(in),
optional :: order_list
 
  309 integer :: i_s,i_e,ntmp,i
 
  310 integer,
allocatable :: order_tmp(:)
 
  311 real(
kind_real) :: list1_tmp(n),list2_tmp(n)
 
  312 logical :: lorder_list,chain,diff
 
  316 if (
present(order_list)) lorder_list = order_list
 
  333 list2_tmp = list2(order)
 
  342       diff = 
inf(list1_tmp(i_s),list1_tmp(i_e))
 
  349          allocate(order_tmp(ntmp))
 
  357          call quick_sort(ntmp,1,ntmp,list2_tmp(i_s:i_e-1),order_tmp)
 
  360           call reorder_eq(ntmp,list2_tmp(i_s:i_e-1),order_tmp) 
 
  363          order_tmp = order_tmp+i_s-1
 
  366          order(i_s:i_e-1) = order(order_tmp)
 
  372          deallocate(order_tmp)
 
  383 if (lorder_list) 
then 
  390 # 201 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  392 # 203 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  402 integer,
intent(in) :: n
 
  403 integer,
intent(in) :: left_end
 
  404 integer,
intent(in) :: right_end
 
  405 integer(kind_int),
intent(inout) :: list(n)
 
  406 integer,
intent(inout) :: order(n)
 
  409 integer,
parameter :: max_simple_sort_size = 6
 
  411 integer(kind_int) :: reference,temp
 
  413 if (right_end<left_end+max_simple_sort_size) 
then 
  418   reference = list((left_end+right_end)/2)
 
  425       if (.not.(list(i)<reference)) 
exit 
  430       if (.not.(list(j)>reference)) 
exit 
  449   if (left_end<j) 
call quick_sort(n,left_end,j,list,order)
 
  450   if (i<right_end) 
call quick_sort(n,i,right_end,list,order)
 
  454 # 203 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  464 integer,
intent(in) :: n
 
  465 integer,
intent(in) :: left_end
 
  466 integer,
intent(in) :: right_end
 
  468 integer,
intent(inout) :: order(n)
 
  471 integer,
parameter :: max_simple_sort_size = 6
 
  475 if (right_end<left_end+max_simple_sort_size) 
then 
  480   reference = list((left_end+right_end)/2)
 
  487       if (.not.(list(i)<reference)) 
exit 
  492       if (.not.(list(j)>reference)) 
exit 
  511   if (left_end<j) 
call quick_sort(n,left_end,j,list,order)
 
  512   if (i<right_end) 
call quick_sort(n,i,right_end,list,order)
 
  516 # 265 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  518 # 267 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  528 integer,
intent(in) :: n
 
  529 integer,
intent(in) :: left_end
 
  530 integer,
intent(in) :: right_end
 
  531 integer(kind_int),
intent(inout) :: list(n)
 
  532 integer,
intent(inout) :: order(n)
 
  536 integer(kind_int) :: temp
 
  544 do i=left_end,right_end-1
 
  546       if (list(i)>list(j)) 
then 
  561 # 267 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  571 integer,
intent(in) :: n
 
  572 integer,
intent(in) :: left_end
 
  573 integer,
intent(in) :: right_end
 
  574 real(kind_real),
intent(inout) :: list(n)
 
  575 integer,
intent(inout) :: order(n)
 
  579 real(kind_real) :: temp
 
  587 do i=left_end,right_end-1
 
  589       if (list(i)>list(j)) 
then 
  604 # 310 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/external/tools_qsort.fypp" 
  615 integer, 
intent(in) :: n
 
  617 integer,
intent(out) :: order(n)
 
  620 integer :: i_s,i_e,ntmp,i
 
  621 integer,
allocatable :: order_tmp(:)
 
  622 logical :: chain,diff
 
  631       diff = .not.
eq(list(i_s),list(i_e))
 
  638          allocate(order_tmp(ntmp))
 
  646          call quick_sort(ntmp,1,ntmp,order(i_s:i_e-1),order_tmp)
 
  647          order_tmp = order_tmp+i_s-1
 
  648          list(i_s:i_e-1) = list(order_tmp)
 
  654          deallocate(order_tmp)