diff --git a/base/modules/auxil/psb_c_hsort_mod.f90 b/base/modules/auxil/psb_c_hsort_mod.f90 index e7eb2fbf..863614c9 100644 --- a/base/modules/auxil/psb_c_hsort_mod.f90 +++ b/base/modules/auxil/psb_c_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_c_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_chsort(x,ix,dir,flag) + subroutine psb_chsort(x,ix,dir,flag,reord) import complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_chsort end interface psb_hsort diff --git a/base/modules/auxil/psb_c_isort_mod.f90 b/base/modules/auxil/psb_c_isort_mod.f90 index d0dbd281..302a2d8e 100644 --- a/base/modules/auxil/psb_c_isort_mod.f90 +++ b/base/modules/auxil/psb_c_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_c_isort_mod use psb_const_mod interface psb_isort - subroutine psb_cisort(x,ix,dir,flag) + subroutine psb_cisort(x,ix,dir,flag,reord) import complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_cisort end interface psb_isort diff --git a/base/modules/auxil/psb_c_msort_mod.f90 b/base/modules/auxil/psb_c_msort_mod.f90 index a74c32fd..54103747 100644 --- a/base/modules/auxil/psb_c_msort_mod.f90 +++ b/base/modules/auxil/psb_c_msort_mod.f90 @@ -55,10 +55,10 @@ module psb_c_msort_mod interface psb_msort - subroutine psb_cmsort(x,ix,dir,flag) + subroutine psb_cmsort(x,ix,dir,flag,reord) import complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_cmsort end interface psb_msort diff --git a/base/modules/auxil/psb_c_qsort_mod.f90 b/base/modules/auxil/psb_c_qsort_mod.f90 index 6c4ceb3f..178fdc72 100644 --- a/base/modules/auxil/psb_c_qsort_mod.f90 +++ b/base/modules/auxil/psb_c_qsort_mod.f90 @@ -45,10 +45,10 @@ module psb_c_qsort_mod interface psb_qsort - subroutine psb_cqsort(x,ix,dir,flag) + subroutine psb_cqsort(x,ix,dir,flag,reord) import complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_cqsort end interface psb_qsort diff --git a/base/modules/auxil/psb_d_hsort_mod.f90 b/base/modules/auxil/psb_d_hsort_mod.f90 index 570f27b1..e9d10a70 100644 --- a/base/modules/auxil/psb_d_hsort_mod.f90 +++ b/base/modules/auxil/psb_d_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_d_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_dhsort(x,ix,dir,flag) + subroutine psb_dhsort(x,ix,dir,flag,reord) import real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_dhsort end interface psb_hsort diff --git a/base/modules/auxil/psb_d_isort_mod.f90 b/base/modules/auxil/psb_d_isort_mod.f90 index b34a3dff..e5e2a09a 100644 --- a/base/modules/auxil/psb_d_isort_mod.f90 +++ b/base/modules/auxil/psb_d_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_d_isort_mod use psb_const_mod interface psb_isort - subroutine psb_disort(x,ix,dir,flag) + subroutine psb_disort(x,ix,dir,flag,reord) import real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_disort end interface psb_isort diff --git a/base/modules/auxil/psb_d_msort_mod.f90 b/base/modules/auxil/psb_d_msort_mod.f90 index d035486b..3c4559bf 100644 --- a/base/modules/auxil/psb_d_msort_mod.f90 +++ b/base/modules/auxil/psb_d_msort_mod.f90 @@ -55,10 +55,10 @@ module psb_d_msort_mod interface psb_msort - subroutine psb_dmsort(x,ix,dir,flag) + subroutine psb_dmsort(x,ix,dir,flag,reord) import real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_dmsort end interface psb_msort diff --git a/base/modules/auxil/psb_d_qsort_mod.f90 b/base/modules/auxil/psb_d_qsort_mod.f90 index 4da0b840..4a9953d8 100644 --- a/base/modules/auxil/psb_d_qsort_mod.f90 +++ b/base/modules/auxil/psb_d_qsort_mod.f90 @@ -64,10 +64,10 @@ module psb_d_qsort_mod end interface psb_ssrch interface psb_qsort - subroutine psb_dqsort(x,ix,dir,flag) + subroutine psb_dqsort(x,ix,dir,flag,reord) import real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_dqsort end interface psb_qsort diff --git a/base/modules/auxil/psb_e_hsort_mod.f90 b/base/modules/auxil/psb_e_hsort_mod.f90 index 5433cec4..3bc38743 100644 --- a/base/modules/auxil/psb_e_hsort_mod.f90 +++ b/base/modules/auxil/psb_e_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_e_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_ehsort(x,ix,dir,flag) + subroutine psb_ehsort(x,ix,dir,flag,reord) import integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) end subroutine psb_ehsort end interface psb_hsort diff --git a/base/modules/auxil/psb_e_isort_mod.f90 b/base/modules/auxil/psb_e_isort_mod.f90 index ead8af04..4006c412 100644 --- a/base/modules/auxil/psb_e_isort_mod.f90 +++ b/base/modules/auxil/psb_e_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_e_isort_mod use psb_const_mod interface psb_isort - subroutine psb_eisort(x,ix,dir,flag) + subroutine psb_eisort(x,ix,dir,flag,reord) import integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) end subroutine psb_eisort end interface psb_isort diff --git a/base/modules/auxil/psb_e_msort_mod.f90 b/base/modules/auxil/psb_e_msort_mod.f90 index 5a0758dd..ef9d5b8d 100644 --- a/base/modules/auxil/psb_e_msort_mod.f90 +++ b/base/modules/auxil/psb_e_msort_mod.f90 @@ -62,10 +62,10 @@ module psb_e_msort_mod interface psb_msort - subroutine psb_emsort(x,ix,dir,flag) + subroutine psb_emsort(x,ix,dir,flag,reord) import integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_epk_), optional, intent(inout) :: ix(:) end subroutine psb_emsort end interface psb_msort diff --git a/base/modules/auxil/psb_e_qsort_mod.f90 b/base/modules/auxil/psb_e_qsort_mod.f90 index 09f45d45..bfd9aa0d 100644 --- a/base/modules/auxil/psb_e_qsort_mod.f90 +++ b/base/modules/auxil/psb_e_qsort_mod.f90 @@ -64,10 +64,10 @@ module psb_e_qsort_mod end interface psb_ssrch interface psb_qsort - subroutine psb_eqsort(x,ix,dir,flag) + subroutine psb_eqsort(x,ix,dir,flag,reord) import integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) end subroutine psb_eqsort end interface psb_qsort diff --git a/base/modules/auxil/psb_i2_hsort_mod.f90 b/base/modules/auxil/psb_i2_hsort_mod.f90 index 6a6c96de..76f7c3fe 100644 --- a/base/modules/auxil/psb_i2_hsort_mod.f90 +++ b/base/modules/auxil/psb_i2_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_i2_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_i2hsort(x,ix,dir,flag) + subroutine psb_i2hsort(x,ix,dir,flag,reord) import integer(psb_i2pk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_i2hsort end interface psb_hsort diff --git a/base/modules/auxil/psb_i2_isort_mod.f90 b/base/modules/auxil/psb_i2_isort_mod.f90 index 115da75c..a7b01662 100644 --- a/base/modules/auxil/psb_i2_isort_mod.f90 +++ b/base/modules/auxil/psb_i2_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_i2_isort_mod use psb_const_mod interface psb_isort - subroutine psb_i2isort(x,ix,dir,flag) + subroutine psb_i2isort(x,ix,dir,flag,reord) import integer(psb_i2pk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_i2isort end interface psb_isort diff --git a/base/modules/auxil/psb_i2_msort_mod.f90 b/base/modules/auxil/psb_i2_msort_mod.f90 index caad0971..f884be48 100644 --- a/base/modules/auxil/psb_i2_msort_mod.f90 +++ b/base/modules/auxil/psb_i2_msort_mod.f90 @@ -62,10 +62,10 @@ module psb_i2_msort_mod interface psb_msort - subroutine psb_i2msort(x,ix,dir,flag) + subroutine psb_i2msort(x,ix,dir,flag,reord) import integer(psb_i2pk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_i2msort end interface psb_msort diff --git a/base/modules/auxil/psb_i2_qsort_mod.f90 b/base/modules/auxil/psb_i2_qsort_mod.f90 index 2f192a0a..4931a35e 100644 --- a/base/modules/auxil/psb_i2_qsort_mod.f90 +++ b/base/modules/auxil/psb_i2_qsort_mod.f90 @@ -64,10 +64,10 @@ module psb_i2_qsort_mod end interface psb_ssrch interface psb_qsort - subroutine psb_i2qsort(x,ix,dir,flag) + subroutine psb_i2qsort(x,ix,dir,flag,reord) import integer(psb_i2pk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_i2qsort end interface psb_qsort diff --git a/base/modules/auxil/psb_m_hsort_mod.f90 b/base/modules/auxil/psb_m_hsort_mod.f90 index 22ffdf34..06dab210 100644 --- a/base/modules/auxil/psb_m_hsort_mod.f90 +++ b/base/modules/auxil/psb_m_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_m_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_mhsort(x,ix,dir,flag) + subroutine psb_mhsort(x,ix,dir,flag,reord) import integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_mhsort end interface psb_hsort diff --git a/base/modules/auxil/psb_m_isort_mod.f90 b/base/modules/auxil/psb_m_isort_mod.f90 index 1f82f389..11206fd0 100644 --- a/base/modules/auxil/psb_m_isort_mod.f90 +++ b/base/modules/auxil/psb_m_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_m_isort_mod use psb_const_mod interface psb_isort - subroutine psb_misort(x,ix,dir,flag) + subroutine psb_misort(x,ix,dir,flag,reord) import integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_misort end interface psb_isort diff --git a/base/modules/auxil/psb_m_msort_mod.f90 b/base/modules/auxil/psb_m_msort_mod.f90 index 12a33686..d433a3a6 100644 --- a/base/modules/auxil/psb_m_msort_mod.f90 +++ b/base/modules/auxil/psb_m_msort_mod.f90 @@ -62,10 +62,10 @@ module psb_m_msort_mod interface psb_msort - subroutine psb_mmsort(x,ix,dir,flag) + subroutine psb_mmsort(x,ix,dir,flag,reord) import integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_mmsort end interface psb_msort diff --git a/base/modules/auxil/psb_m_qsort_mod.f90 b/base/modules/auxil/psb_m_qsort_mod.f90 index bf029065..b43a62c0 100644 --- a/base/modules/auxil/psb_m_qsort_mod.f90 +++ b/base/modules/auxil/psb_m_qsort_mod.f90 @@ -64,10 +64,10 @@ module psb_m_qsort_mod end interface psb_ssrch interface psb_qsort - subroutine psb_mqsort(x,ix,dir,flag) + subroutine psb_mqsort(x,ix,dir,flag,reord) import integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_mqsort end interface psb_qsort diff --git a/base/modules/auxil/psb_s_hsort_mod.f90 b/base/modules/auxil/psb_s_hsort_mod.f90 index 4cee5508..7b25cec0 100644 --- a/base/modules/auxil/psb_s_hsort_mod.f90 +++ b/base/modules/auxil/psb_s_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_s_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_shsort(x,ix,dir,flag) + subroutine psb_shsort(x,ix,dir,flag,reord) import real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_shsort end interface psb_hsort diff --git a/base/modules/auxil/psb_s_isort_mod.f90 b/base/modules/auxil/psb_s_isort_mod.f90 index 9692ed88..194ba2de 100644 --- a/base/modules/auxil/psb_s_isort_mod.f90 +++ b/base/modules/auxil/psb_s_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_s_isort_mod use psb_const_mod interface psb_isort - subroutine psb_sisort(x,ix,dir,flag) + subroutine psb_sisort(x,ix,dir,flag,reord) import real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_sisort end interface psb_isort diff --git a/base/modules/auxil/psb_s_msort_mod.f90 b/base/modules/auxil/psb_s_msort_mod.f90 index f3107290..ce0e4399 100644 --- a/base/modules/auxil/psb_s_msort_mod.f90 +++ b/base/modules/auxil/psb_s_msort_mod.f90 @@ -55,10 +55,10 @@ module psb_s_msort_mod interface psb_msort - subroutine psb_smsort(x,ix,dir,flag) + subroutine psb_smsort(x,ix,dir,flag,reord) import real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_smsort end interface psb_msort diff --git a/base/modules/auxil/psb_s_qsort_mod.f90 b/base/modules/auxil/psb_s_qsort_mod.f90 index a5bdb2d9..5fbfe9e1 100644 --- a/base/modules/auxil/psb_s_qsort_mod.f90 +++ b/base/modules/auxil/psb_s_qsort_mod.f90 @@ -64,10 +64,10 @@ module psb_s_qsort_mod end interface psb_ssrch interface psb_qsort - subroutine psb_sqsort(x,ix,dir,flag) + subroutine psb_sqsort(x,ix,dir,flag,reord) import real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_sqsort end interface psb_qsort diff --git a/base/modules/auxil/psb_z_hsort_mod.f90 b/base/modules/auxil/psb_z_hsort_mod.f90 index 98e47da2..bc3d3436 100644 --- a/base/modules/auxil/psb_z_hsort_mod.f90 +++ b/base/modules/auxil/psb_z_hsort_mod.f90 @@ -44,10 +44,10 @@ module psb_z_hsort_mod use psb_const_mod interface psb_hsort - subroutine psb_zhsort(x,ix,dir,flag) + subroutine psb_zhsort(x,ix,dir,flag,reord) import complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_zhsort end interface psb_hsort diff --git a/base/modules/auxil/psb_z_isort_mod.f90 b/base/modules/auxil/psb_z_isort_mod.f90 index 4048088a..bb51de00 100644 --- a/base/modules/auxil/psb_z_isort_mod.f90 +++ b/base/modules/auxil/psb_z_isort_mod.f90 @@ -44,10 +44,10 @@ module psb_z_isort_mod use psb_const_mod interface psb_isort - subroutine psb_zisort(x,ix,dir,flag) + subroutine psb_zisort(x,ix,dir,flag,reord) import complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_zisort end interface psb_isort diff --git a/base/modules/auxil/psb_z_msort_mod.f90 b/base/modules/auxil/psb_z_msort_mod.f90 index 515b69cf..6a830d5d 100644 --- a/base/modules/auxil/psb_z_msort_mod.f90 +++ b/base/modules/auxil/psb_z_msort_mod.f90 @@ -55,10 +55,10 @@ module psb_z_msort_mod interface psb_msort - subroutine psb_zmsort(x,ix,dir,flag) + subroutine psb_zmsort(x,ix,dir,flag,reord) import complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_zmsort end interface psb_msort diff --git a/base/modules/auxil/psb_z_qsort_mod.f90 b/base/modules/auxil/psb_z_qsort_mod.f90 index 2fc6baab..351c6ebd 100644 --- a/base/modules/auxil/psb_z_qsort_mod.f90 +++ b/base/modules/auxil/psb_z_qsort_mod.f90 @@ -45,10 +45,10 @@ module psb_z_qsort_mod interface psb_qsort - subroutine psb_zqsort(x,ix,dir,flag) + subroutine psb_zqsort(x,ix,dir,flag,reord) import complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) end subroutine psb_zqsort end interface psb_qsort diff --git a/base/serial/sort/psb_c_hsort_impl.f90 b/base/serial/sort/psb_c_hsort_impl.f90 index 2400fcf7..4251ddaa 100644 --- a/base/serial/sort/psb_c_hsort_impl.f90 +++ b/base/serial/sort/psb_c_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_chsort(x,ix,dir,flag) +subroutine psb_chsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_chsort use psb_error_mod implicit none complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_ipk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_ipk_) :: n, i, l, dir_ complex(psb_spk_) :: key integer(psb_ipk_) :: index + complex(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_chsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_chsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_c_isort_impl.f90 b/base/serial/sort/psb_c_isort_impl.f90 index e6163753..0251d37e 100644 --- a/base/serial/sort/psb_c_isort_impl.f90 +++ b/base/serial/sort/psb_c_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_cisort(x,ix,dir,flag) +subroutine psb_cisort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_cisort use psb_error_mod implicit none complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_ipk_) :: n, i + complex(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_cisort(x,ix,dir,flag) name='psb_cisort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,39 +97,73 @@ subroutine psb_cisort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_lsort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_lsort_up_) call psi_clisrx_up(n,x,ix) - case (psb_lsort_down_) + case (psb_lsort_down_) call psi_clisrx_dw(n,x,ix) - case (psb_alsort_up_) + case (psb_alsort_up_) call psi_calisrx_up(n,x,ix) - case (psb_alsort_down_) + case (psb_alsort_down_) call psi_calisrx_dw(n,x,ix) - case (psb_asort_up_) + case (psb_asort_up_) call psi_caisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_caisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_lsort_up_) + call psi_clisrx_up(n,tx,ix) + case (psb_lsort_down_) + call psi_clisrx_dw(n,tx,ix) + case (psb_alsort_up_) + call psi_calisrx_up(n,tx,ix) + case (psb_alsort_down_) + call psi_calisrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_caisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_caisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_lsort_up_) - call psi_clisr_up(n,x) + call psi_clisr_up(n,x) case (psb_lsort_down_) - call psi_clisr_dw(n,x) + call psi_clisr_dw(n,x) case (psb_alsort_up_) - call psi_calisr_up(n,x) + call psi_calisr_up(n,x) case (psb_alsort_down_) - call psi_calisr_dw(n,x) + call psi_calisr_dw(n,x) case (psb_asort_up_) - call psi_caisr_up(n,x) + call psi_caisr_up(n,x) case (psb_asort_down_) - call psi_caisr_dw(n,x) + call psi_caisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_c_msort_impl.f90 b/base/serial/sort/psb_c_msort_impl.f90 index 751f6098..e61ee9e1 100644 --- a/base/serial/sort/psb_c_msort_impl.f90 +++ b/base/serial/sort/psb_c_msort_impl.f90 @@ -77,16 +77,16 @@ subroutine psb_cmsort_u(x,nout,dir) end subroutine psb_cmsort_u -subroutine psb_cmsort(x,ix,dir,flag) +subroutine psb_cmsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_cmsort use psb_error_mod use psb_ip_reord_mod implicit none complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_ipk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -96,6 +96,11 @@ subroutine psb_cmsort(x,ix,dir,flag) name='psb_cmsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -163,11 +168,25 @@ subroutine psb_cmsort(x,ix,dir,flag) ! only provide linked pointers. ! if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if return diff --git a/base/serial/sort/psb_c_qsort_impl.f90 b/base/serial/sort/psb_c_qsort_impl.f90 index 7f33c099..0111e9c2 100644 --- a/base/serial/sort/psb_c_qsort_impl.f90 +++ b/base/serial/sort/psb_c_qsort_impl.f90 @@ -41,22 +41,29 @@ ! Addison-Wesley ! -subroutine psb_cqsort(x,ix,dir,flag) +subroutine psb_cqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_cqsort use psb_error_mod implicit none complex(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_ipk_) :: n + complex(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_cqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -91,25 +98,57 @@ subroutine psb_cqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_lsort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_lsort_up_) call psi_clqsrx_up(n,x,ix) - case (psb_lsort_down_) + case (psb_lsort_down_) call psi_clqsrx_dw(n,x,ix) - case (psb_alsort_up_) + case (psb_alsort_up_) call psi_calqsrx_up(n,x,ix) - case (psb_alsort_down_) + case (psb_alsort_down_) call psi_calqsrx_dw(n,x,ix) - case (psb_asort_up_) + case (psb_asort_up_) call psi_caqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_caqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_lsort_up_) + call psi_clqsrx_up(n,tx,ix) + case (psb_lsort_down_) + call psi_clqsrx_dw(n,tx,ix) + case (psb_alsort_up_) + call psi_calqsrx_up(n,tx,ix) + case (psb_alsort_down_) + call psi_calqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_caqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_caqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_lsort_up_) call psi_clqsr_up(n,x) diff --git a/base/serial/sort/psb_d_hsort_impl.f90 b/base/serial/sort/psb_d_hsort_impl.f90 index ffb952d5..dac327d1 100644 --- a/base/serial/sort/psb_d_hsort_impl.f90 +++ b/base/serial/sort/psb_d_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_dhsort(x,ix,dir,flag) +subroutine psb_dhsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_dhsort use psb_error_mod implicit none real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_ipk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_ipk_) :: n, i, l, dir_ real(psb_dpk_) :: key integer(psb_ipk_) :: index + real(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_dhsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_dhsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_d_isort_impl.f90 b/base/serial/sort/psb_d_isort_impl.f90 index 94e3abd4..62b6eed1 100644 --- a/base/serial/sort/psb_d_isort_impl.f90 +++ b/base/serial/sort/psb_d_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_disort(x,ix,dir,flag) +subroutine psb_disort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_disort use psb_error_mod implicit none real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_ipk_) :: n, i + real(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_disort(x,ix,dir,flag) name='psb_disort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,31 +97,61 @@ subroutine psb_disort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_sort_up_) - call psi_disrx_up(n,x,ix) - case (psb_sort_down_) - call psi_disrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_disrx_up(n,x,ix) + case (psb_sort_down_) + call psi_disrx_dw(n,x,ix) + case (psb_asort_up_) call psi_daisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_daisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_disrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_disrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_daisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_daisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_sort_up_) call psi_disr_up(n,x) case (psb_sort_down_) call psi_disr_dw(n,x) case (psb_asort_up_) - call psi_daisr_up(n,x) + call psi_daisr_up(n,x) case (psb_asort_down_) - call psi_daisr_dw(n,x) + call psi_daisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_d_msort_impl.f90 b/base/serial/sort/psb_d_msort_impl.f90 index 66ad7897..7c38f27d 100644 --- a/base/serial/sort/psb_d_msort_impl.f90 +++ b/base/serial/sort/psb_d_msort_impl.f90 @@ -76,16 +76,16 @@ subroutine psb_dmsort_u(x,nout,dir) return end subroutine psb_dmsort_u -subroutine psb_dmsort(x,ix,dir,flag) +subroutine psb_dmsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_dmsort use psb_error_mod use psb_ip_reord_mod implicit none real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_ipk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -95,6 +95,11 @@ subroutine psb_dmsort(x,ix,dir,flag) name='psb_dmsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -157,15 +162,28 @@ subroutine psb_dmsort(x,ix,dir,flag) ! Do the actual reordering, since the inner routines ! only provide linked pointers. ! - if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + if (iret == 0 ) then + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if - return 9999 call psb_error_handler(err_act) diff --git a/base/serial/sort/psb_d_qsort_impl.f90 b/base/serial/sort/psb_d_qsort_impl.f90 index 8e4b1d21..c397ba23 100644 --- a/base/serial/sort/psb_d_qsort_impl.f90 +++ b/base/serial/sort/psb_d_qsort_impl.f90 @@ -159,22 +159,29 @@ function psb_dssrch(key,n,v) result(ipos) return end function psb_dssrch -subroutine psb_dqsort(x,ix,dir,flag) +subroutine psb_dqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_dqsort use psb_error_mod implicit none real(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_ipk_) :: n + real(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_dqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -209,21 +216,49 @@ subroutine psb_dqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_sort_up_) - call psi_dqsrx_up(n,x,ix) - case (psb_sort_down_) - call psi_dqsrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_dqsrx_up(n,x,ix) + case (psb_sort_down_) + call psi_dqsrx_dw(n,x,ix) + case (psb_asort_up_) call psi_daqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_daqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_dqsrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_dqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_daqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_daqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_sort_up_) call psi_dqsr_up(n,x) diff --git a/base/serial/sort/psb_e_hsort_impl.f90 b/base/serial/sort/psb_e_hsort_impl.f90 index f1a1a78f..8fa00a83 100644 --- a/base/serial/sort/psb_e_hsort_impl.f90 +++ b/base/serial/sort/psb_e_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_ehsort(x,ix,dir,flag) +subroutine psb_ehsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_ehsort use psb_error_mod implicit none integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_epk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_epk_) :: n, i, l, dir_ integer(psb_epk_) :: key integer(psb_epk_) :: index + integer(psb_epk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_ehsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_ehsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_e_isort_impl.f90 b/base/serial/sort/psb_e_isort_impl.f90 index 0fe32318..20d3600c 100644 --- a/base/serial/sort/psb_e_isort_impl.f90 +++ b/base/serial/sort/psb_e_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_eisort(x,ix,dir,flag) +subroutine psb_eisort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_eisort use psb_error_mod implicit none integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_epk_) :: n, i + integer(psb_epk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_eisort(x,ix,dir,flag) name='psb_eisort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,31 +97,61 @@ subroutine psb_eisort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_sort_up_) - call psi_eisrx_up(n,x,ix) - case (psb_sort_down_) - call psi_eisrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_eisrx_up(n,x,ix) + case (psb_sort_down_) + call psi_eisrx_dw(n,x,ix) + case (psb_asort_up_) call psi_eaisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_eaisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_eisrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_eisrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_eaisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_eaisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_sort_up_) call psi_eisr_up(n,x) case (psb_sort_down_) call psi_eisr_dw(n,x) case (psb_asort_up_) - call psi_eaisr_up(n,x) + call psi_eaisr_up(n,x) case (psb_asort_down_) - call psi_eaisr_dw(n,x) + call psi_eaisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_e_msort_impl.f90 b/base/serial/sort/psb_e_msort_impl.f90 index b97d448a..93ac8a6e 100644 --- a/base/serial/sort/psb_e_msort_impl.f90 +++ b/base/serial/sort/psb_e_msort_impl.f90 @@ -131,16 +131,16 @@ subroutine psb_emsort_u(x,nout,dir) return end subroutine psb_emsort_u -subroutine psb_emsort(x,ix,dir,flag) +subroutine psb_emsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_emsort use psb_error_mod use psb_ip_reord_mod implicit none integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_epk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_epk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -150,6 +150,11 @@ subroutine psb_emsort(x,ix,dir,flag) name='psb_emsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -212,15 +217,28 @@ subroutine psb_emsort(x,ix,dir,flag) ! Do the actual reordering, since the inner routines ! only provide linked pointers. ! - if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + if (iret == 0 ) then + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if - return 9999 call psb_error_handler(err_act) diff --git a/base/serial/sort/psb_e_qsort_impl.f90 b/base/serial/sort/psb_e_qsort_impl.f90 index c70f8051..ea3bfd14 100644 --- a/base/serial/sort/psb_e_qsort_impl.f90 +++ b/base/serial/sort/psb_e_qsort_impl.f90 @@ -159,22 +159,29 @@ function psb_essrch(key,n,v) result(ipos) return end function psb_essrch -subroutine psb_eqsort(x,ix,dir,flag) +subroutine psb_eqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_eqsort use psb_error_mod implicit none integer(psb_epk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_epk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_epk_) :: n + integer(psb_epk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_eqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -209,21 +216,49 @@ subroutine psb_eqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_sort_up_) - call psi_eqsrx_up(n,x,ix) - case (psb_sort_down_) - call psi_eqsrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_eqsrx_up(n,x,ix) + case (psb_sort_down_) + call psi_eqsrx_dw(n,x,ix) + case (psb_asort_up_) call psi_eaqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_eaqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_eqsrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_eqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_eaqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_eaqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_sort_up_) call psi_eqsr_up(n,x) diff --git a/base/serial/sort/psb_m_hsort_impl.f90 b/base/serial/sort/psb_m_hsort_impl.f90 index 5dc92082..92f67d8b 100644 --- a/base/serial/sort/psb_m_hsort_impl.f90 +++ b/base/serial/sort/psb_m_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_mhsort(x,ix,dir,flag) +subroutine psb_mhsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_mhsort use psb_error_mod implicit none integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_ipk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_ipk_) :: n, i, l, dir_ integer(psb_mpk_) :: key integer(psb_ipk_) :: index + integer(psb_mpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_mhsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_mhsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_m_isort_impl.f90 b/base/serial/sort/psb_m_isort_impl.f90 index 1f373e42..ae6c0ce2 100644 --- a/base/serial/sort/psb_m_isort_impl.f90 +++ b/base/serial/sort/psb_m_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_misort(x,ix,dir,flag) +subroutine psb_misort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_misort use psb_error_mod implicit none integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_ipk_) :: n, i + integer(psb_mpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_misort(x,ix,dir,flag) name='psb_misort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,31 +97,61 @@ subroutine psb_misort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_sort_up_) - call psi_misrx_up(n,x,ix) - case (psb_sort_down_) - call psi_misrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_misrx_up(n,x,ix) + case (psb_sort_down_) + call psi_misrx_dw(n,x,ix) + case (psb_asort_up_) call psi_maisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_maisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_misrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_misrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_maisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_maisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_sort_up_) call psi_misr_up(n,x) case (psb_sort_down_) call psi_misr_dw(n,x) case (psb_asort_up_) - call psi_maisr_up(n,x) + call psi_maisr_up(n,x) case (psb_asort_down_) - call psi_maisr_dw(n,x) + call psi_maisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_m_msort_impl.f90 b/base/serial/sort/psb_m_msort_impl.f90 index 437d1069..d3af4673 100644 --- a/base/serial/sort/psb_m_msort_impl.f90 +++ b/base/serial/sort/psb_m_msort_impl.f90 @@ -131,16 +131,16 @@ subroutine psb_mmsort_u(x,nout,dir) return end subroutine psb_mmsort_u -subroutine psb_mmsort(x,ix,dir,flag) +subroutine psb_mmsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_mmsort use psb_error_mod use psb_ip_reord_mod implicit none integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_ipk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -150,6 +150,11 @@ subroutine psb_mmsort(x,ix,dir,flag) name='psb_mmsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -212,15 +217,28 @@ subroutine psb_mmsort(x,ix,dir,flag) ! Do the actual reordering, since the inner routines ! only provide linked pointers. ! - if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + if (iret == 0 ) then + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if - return 9999 call psb_error_handler(err_act) diff --git a/base/serial/sort/psb_m_qsort_impl.f90 b/base/serial/sort/psb_m_qsort_impl.f90 index 6b70c3a0..2dd009b3 100644 --- a/base/serial/sort/psb_m_qsort_impl.f90 +++ b/base/serial/sort/psb_m_qsort_impl.f90 @@ -159,22 +159,29 @@ function psb_mssrch(key,n,v) result(ipos) return end function psb_mssrch -subroutine psb_mqsort(x,ix,dir,flag) +subroutine psb_mqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_mqsort use psb_error_mod implicit none integer(psb_mpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_ipk_) :: n + integer(psb_mpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_mqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -209,21 +216,49 @@ subroutine psb_mqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_sort_up_) - call psi_mqsrx_up(n,x,ix) - case (psb_sort_down_) - call psi_mqsrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_mqsrx_up(n,x,ix) + case (psb_sort_down_) + call psi_mqsrx_dw(n,x,ix) + case (psb_asort_up_) call psi_maqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_maqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_mqsrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_mqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_maqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_maqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_sort_up_) call psi_mqsr_up(n,x) diff --git a/base/serial/sort/psb_s_hsort_impl.f90 b/base/serial/sort/psb_s_hsort_impl.f90 index 77fefe14..559f92c5 100644 --- a/base/serial/sort/psb_s_hsort_impl.f90 +++ b/base/serial/sort/psb_s_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_shsort(x,ix,dir,flag) +subroutine psb_shsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_shsort use psb_error_mod implicit none real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_ipk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_ipk_) :: n, i, l, dir_ real(psb_spk_) :: key integer(psb_ipk_) :: index + real(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_shsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_shsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_s_isort_impl.f90 b/base/serial/sort/psb_s_isort_impl.f90 index cdcc05eb..a8be6d46 100644 --- a/base/serial/sort/psb_s_isort_impl.f90 +++ b/base/serial/sort/psb_s_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_sisort(x,ix,dir,flag) +subroutine psb_sisort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_sisort use psb_error_mod implicit none real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_ipk_) :: n, i + real(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_sisort(x,ix,dir,flag) name='psb_sisort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,31 +97,61 @@ subroutine psb_sisort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_sort_up_) - call psi_sisrx_up(n,x,ix) - case (psb_sort_down_) - call psi_sisrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_sisrx_up(n,x,ix) + case (psb_sort_down_) + call psi_sisrx_dw(n,x,ix) + case (psb_asort_up_) call psi_saisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_saisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_sisrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_sisrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_saisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_saisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_sort_up_) call psi_sisr_up(n,x) case (psb_sort_down_) call psi_sisr_dw(n,x) case (psb_asort_up_) - call psi_saisr_up(n,x) + call psi_saisr_up(n,x) case (psb_asort_down_) - call psi_saisr_dw(n,x) + call psi_saisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_s_msort_impl.f90 b/base/serial/sort/psb_s_msort_impl.f90 index e3382f27..e3c0a184 100644 --- a/base/serial/sort/psb_s_msort_impl.f90 +++ b/base/serial/sort/psb_s_msort_impl.f90 @@ -76,16 +76,16 @@ subroutine psb_smsort_u(x,nout,dir) return end subroutine psb_smsort_u -subroutine psb_smsort(x,ix,dir,flag) +subroutine psb_smsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_smsort use psb_error_mod use psb_ip_reord_mod implicit none real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag, reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_ipk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -95,6 +95,11 @@ subroutine psb_smsort(x,ix,dir,flag) name='psb_smsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -157,15 +162,28 @@ subroutine psb_smsort(x,ix,dir,flag) ! Do the actual reordering, since the inner routines ! only provide linked pointers. ! - if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + if (iret == 0 ) then + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if - return 9999 call psb_error_handler(err_act) diff --git a/base/serial/sort/psb_s_qsort_impl.f90 b/base/serial/sort/psb_s_qsort_impl.f90 index cae32546..6b2d4821 100644 --- a/base/serial/sort/psb_s_qsort_impl.f90 +++ b/base/serial/sort/psb_s_qsort_impl.f90 @@ -159,22 +159,29 @@ function psb_sssrch(key,n,v) result(ipos) return end function psb_sssrch -subroutine psb_sqsort(x,ix,dir,flag) +subroutine psb_sqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_sqsort use psb_error_mod implicit none real(psb_spk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_ipk_) :: n + real(psb_spk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_sqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -209,21 +216,49 @@ subroutine psb_sqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_sort_up_) - call psi_sqsrx_up(n,x,ix) - case (psb_sort_down_) - call psi_sqsrx_dw(n,x,ix) - case (psb_asort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_sort_up_) + call psi_sqsrx_up(n,x,ix) + case (psb_sort_down_) + call psi_sqsrx_dw(n,x,ix) + case (psb_asort_up_) call psi_saqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_saqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_sort_up_) + call psi_sqsrx_up(n,tx,ix) + case (psb_sort_down_) + call psi_sqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_saqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_saqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_sort_up_) call psi_sqsr_up(n,x) diff --git a/base/serial/sort/psb_z_hsort_impl.f90 b/base/serial/sort/psb_z_hsort_impl.f90 index e796f831..9e886dde 100644 --- a/base/serial/sort/psb_z_hsort_impl.f90 +++ b/base/serial/sort/psb_z_hsort_impl.f90 @@ -41,18 +41,19 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_zhsort(x,ix,dir,flag) +subroutine psb_zhsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_zhsort use psb_error_mod implicit none complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: flag_, n, i, err_act,info - integer(psb_ipk_) :: dir_, l + integer(psb_ipk_) :: flag_, err_act, info, reord_ + integer(psb_ipk_) :: n, i, l, dir_ complex(psb_dpk_) :: key integer(psb_ipk_) :: index + complex(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -60,6 +61,13 @@ subroutine psb_zhsort(x,ix,dir,flag) name='psb_hsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -113,24 +121,57 @@ subroutine psb_zhsort(x,ix,dir,flag) ix(i) = i end do end if - l = 0 - do i=1, n - key = x(i) - index = ix(i) - call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) - if (l /= i) then - write(psb_err_unit,*) 'Mismatch while heapifying ! ' - end if - end do - do i=n, 2, -1 - call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) - if (l /= i-1) then - write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i - end if - x(i) = key - ix(i) = index - end do - else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + + l = 0 + do i=1, n + key = x(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,x,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,x,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + x(i) = key + ix(i) = index + end do + case(psb_sort_noreord_x_) + tx = x + + l = 0 + do i=1, n + key = tx(i) + index = ix(i) + call psi_idx_insert_heap(key,index,l,tx,ix,dir_,info) + if (l /= i) then + write(psb_err_unit,*) 'Mismatch while heapifying ! ' + end if + end do + do i=n, 2, -1 + call psi_idx_heap_get_first(key,index,l,tx,ix,dir_,info) + if (l /= i-1) then + write(psb_err_unit,*) 'Mismatch while pulling out of heap ',l,i + end if + tx(i) = key + ix(i) = index + end do + end select + else if (.not.present(ix)) then + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + l = 0 do i=1, n key = x(i) diff --git a/base/serial/sort/psb_z_isort_impl.f90 b/base/serial/sort/psb_z_isort_impl.f90 index 340ed8e3..465699da 100644 --- a/base/serial/sort/psb_z_isort_impl.f90 +++ b/base/serial/sort/psb_z_isort_impl.f90 @@ -40,16 +40,17 @@ ! Data Structures and Algorithms ! Addison-Wesley ! -subroutine psb_zisort(x,ix,dir,flag) +subroutine psb_zisort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_zisort use psb_error_mod implicit none complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act + integer(psb_ipk_) :: dir_, flag_, err_act, reord_ integer(psb_ipk_) :: n, i + complex(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name @@ -57,6 +58,12 @@ subroutine psb_zisort(x,ix,dir,flag) name='psb_zisort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if + if (present(flag)) then flag_ = flag else @@ -90,39 +97,73 @@ subroutine psb_zisort(x,ix,dir,flag) ix(i) = i end do end if - - select case(dir_) - case (psb_lsort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_lsort_up_) call psi_zlisrx_up(n,x,ix) - case (psb_lsort_down_) + case (psb_lsort_down_) call psi_zlisrx_dw(n,x,ix) - case (psb_alsort_up_) + case (psb_alsort_up_) call psi_zalisrx_up(n,x,ix) - case (psb_alsort_down_) + case (psb_alsort_down_) call psi_zalisrx_dw(n,x,ix) - case (psb_asort_up_) + case (psb_asort_up_) call psi_zaisrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_zaisrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_lsort_up_) + call psi_zlisrx_up(n,tx,ix) + case (psb_lsort_down_) + call psi_zlisrx_dw(n,tx,ix) + case (psb_alsort_up_) + call psi_zalisrx_up(n,tx,ix) + case (psb_alsort_down_) + call psi_zalisrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_zaisrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_zaisrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else select case(dir_) case (psb_lsort_up_) - call psi_zlisr_up(n,x) + call psi_zlisr_up(n,x) case (psb_lsort_down_) - call psi_zlisr_dw(n,x) + call psi_zlisr_dw(n,x) case (psb_alsort_up_) - call psi_zalisr_up(n,x) + call psi_zalisr_up(n,x) case (psb_alsort_down_) - call psi_zalisr_dw(n,x) + call psi_zalisr_dw(n,x) case (psb_asort_up_) - call psi_zaisr_up(n,x) + call psi_zaisr_up(n,x) case (psb_asort_down_) - call psi_zaisr_dw(n,x) + call psi_zaisr_dw(n,x) case default ierr(1) = 3; ierr(2) = dir_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) diff --git a/base/serial/sort/psb_z_msort_impl.f90 b/base/serial/sort/psb_z_msort_impl.f90 index 525ed572..24934e14 100644 --- a/base/serial/sort/psb_z_msort_impl.f90 +++ b/base/serial/sort/psb_z_msort_impl.f90 @@ -77,16 +77,16 @@ subroutine psb_zmsort_u(x,nout,dir) end subroutine psb_zmsort_u -subroutine psb_zmsort(x,ix,dir,flag) +subroutine psb_zmsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_zmsort use psb_error_mod use psb_ip_reord_mod implicit none complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, n, err_act + integer(psb_ipk_) :: dir_, flag_, n, err_act, reord_ integer(psb_ipk_), allocatable :: iaux(:) integer(psb_ipk_) :: iret, info, i @@ -96,6 +96,11 @@ subroutine psb_zmsort(x,ix,dir,flag) name='psb_zmsort' call psb_erractionsave(err_act) + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(dir)) then dir_ = dir else @@ -163,11 +168,25 @@ subroutine psb_zmsort(x,ix,dir,flag) ! only provide linked pointers. ! if (iret == 0 ) then - if (present(ix)) then - call psb_ip_reord(n,x,ix,iaux) - else - call psb_ip_reord(n,x,iaux) - end if + select case(reord_) + case(psb_sort_reord_x_) + if (present(ix)) then + call psb_ip_reord(n,x,ix,iaux) + else + call psb_ip_reord(n,x,iaux) + end if + case(psb_sort_noreord_x_) + if (present(ix)) then + call psb_ip_reord(n,ix,iaux) + else + call psb_errpush(psb_err_no_optional_arg_,name,a_err="ix") + goto 9999 + end if + case default + ierr(1) = 5; ierr(2) = reord_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select end if return diff --git a/base/serial/sort/psb_z_qsort_impl.f90 b/base/serial/sort/psb_z_qsort_impl.f90 index a1cdb193..ce3061ea 100644 --- a/base/serial/sort/psb_z_qsort_impl.f90 +++ b/base/serial/sort/psb_z_qsort_impl.f90 @@ -41,22 +41,29 @@ ! Addison-Wesley ! -subroutine psb_zqsort(x,ix,dir,flag) +subroutine psb_zqsort(x,ix,dir,flag,reord) use psb_sort_mod, psb_protect_name => psb_zqsort use psb_error_mod implicit none complex(psb_dpk_), intent(inout) :: x(:) - integer(psb_ipk_), optional, intent(in) :: dir, flag + integer(psb_ipk_), optional, intent(in) :: dir, flag,reord integer(psb_ipk_), optional, intent(inout) :: ix(:) - integer(psb_ipk_) :: dir_, flag_, err_act, i + integer(psb_ipk_) :: dir_, flag_, err_act, i, reord_ integer(psb_ipk_) :: n + complex(psb_dpk_), allocatable :: tx(:) integer(psb_ipk_) :: ierr(5) character(len=20) :: name name='psb_zqsort' call psb_erractionsave(err_act) + + if (present(reord)) then + reord_ = reord + else + reord_= psb_sort_reord_x_ + end if if (present(flag)) then flag_ = flag else @@ -91,25 +98,57 @@ subroutine psb_zqsort(x,ix,dir,flag) end do end if - select case(dir_) - case (psb_lsort_up_) + select case(reord_) + case (psb_sort_reord_x_) + select case(dir_) + case (psb_lsort_up_) call psi_zlqsrx_up(n,x,ix) - case (psb_lsort_down_) + case (psb_lsort_down_) call psi_zlqsrx_dw(n,x,ix) - case (psb_alsort_up_) + case (psb_alsort_up_) call psi_zalqsrx_up(n,x,ix) - case (psb_alsort_down_) + case (psb_alsort_down_) call psi_zalqsrx_dw(n,x,ix) - case (psb_asort_up_) + case (psb_asort_up_) call psi_zaqsrx_up(n,x,ix) - case (psb_asort_down_) + case (psb_asort_down_) call psi_zaqsrx_dw(n,x,ix) - case default - ierr(1) = 3; ierr(2) = dir_; + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + case(psb_sort_noreord_x_) + tx = x + select case(dir_) + case (psb_lsort_up_) + call psi_zlqsrx_up(n,tx,ix) + case (psb_lsort_down_) + call psi_zlqsrx_dw(n,tx,ix) + case (psb_alsort_up_) + call psi_zalqsrx_up(n,tx,ix) + case (psb_alsort_down_) + call psi_zalqsrx_dw(n,tx,ix) + case (psb_asort_up_) + call psi_zaqsrx_up(n,tx,ix) + case (psb_asort_down_) + call psi_zaqsrx_dw(n,tx,ix) + case default + ierr(1) = 3; ierr(2) = dir_; + call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) + goto 9999 + end select + end select + else + select case(reord_) + case (psb_sort_reord_x_) + !OK + case default + ierr(1) = 5; ierr(2) = reord_; call psb_errpush(psb_err_input_value_invalid_i_,name,i_err=ierr) goto 9999 end select - else + select case(dir_) case (psb_lsort_up_) call psi_zlqsr_up(n,x) diff --git a/docs/html/userhtmlse6.html b/docs/html/userhtmlse6.html index f5be71d9..c26876b8 100644 --- a/docs/html/userhtmlse6.html +++ b/docs/html/userhtmlse6.html @@ -3886,10 +3886,10 @@ class="pplb7t-x-x-120">_hsort — Sorting by the Heapsort algorithm
-call psb_isort(x,ix,dir,flag) -call psb_msort(x,ix,dir,flag) -call psb_qsort(x,ix,dir,flag) -call psb_hsort(x,ix,dir,flag) +call psb_isort(x,ix,dir,flag,reord) +call psb_msort(x,ix,dir,flag,reord) +call psb_qsort(x,ix,dir,flag,reord) +call psb_hsort(x,ix,dir,flag,reord)
These serial routines sort a sequence
A vector of indices.
+
dir The desired ordering. The desired ordering.
+
Integer and real data: psb_sort_up_, psb_sort_down_, psb_asort_up_,
@@ -3952,11 +3959,11 @@ class="cmtt-10">psb_sort_up_
+
Complex data: psb_lsort_up_, psb_lsort_down_, psb_asort_up_,
@@ -3964,11 +3971,11 @@ class="cmtt-10">psb_asort_up_
Type:optional.
Specified as: an integer array of (at least) the same size as X.
+class="newline" />Specified as: an integer array of (at least) the same size as X. This
+ argument is required when reord = psb_sort_noreord_x_.
Type:optional.
Specified as: an integer value:
+
flag
Whether to keep the original values in Whether to keep the original values in IX.
Type:optional.
psb_sort_ovw_idx_
+reord
Whether to reorder the input vector x or just return IX for further
+ usage.
Type:optional.
Specified as: an integer value psb_sort_reord_x_ or psb_sort_noreord_x_;
+ default psb_sort_reord_x_.
+
+
On Return
+
+
x
The sequence of values, in the chosen ordering.
The sequence of values; if reord=psb_sort_reord_x_ it will be in the
+ chosen ordering.
Type:required.
Specified as: an integer, real or complex array of rank 1.
+
ix
A vector of indices.
A vector of indices.
Type: Optional
An integer array of rank 1, whose entries are moved to the same position
- as the corresponding entries in x.
An integer array of rank 1, whose i-th entry gives the position of the + (sorted) value of x in the original sequence. + + + +
Notes
For integer or real data the sorting can be performed in the up/down +
For integer or real data the sorting can be performed in the up/down direction, on the natural or absolute values;
For complex data the sorting can be done in a lexicographic order (i.e.: +
For complex data the sorting can be done in a lexicographic order (i.e.: sort on the real part with ties broken according to the imaginary part) or on the absolute values; - - -
The routines return the items in the chosen ordering; the output +
The routines return the items in the chosen ordering; the output difference is the handling of ties (i.e. items with an equal value) in the original input. With the insertion-sort or merge-sort algorithms ties are preserved in the same relative order as they had in the original sequence, @@ -4032,7 +4058,22 @@ class="pplb7t-x-x-120">Notes
If If reord = psb_sort_noreord_x_, then the input sequence x is not reordered;
+ the output is given in ix. Calling without ix in this case is flagged as an
+ error;
+
If flag = psb_) occupied in the original data sequence;
If
+ If flag = psb_ix(:) have already been initialized by the user;
Three sorting algorithms have a similar
+
+
+
+ Three sorting algorithms have a similar O(n log ); of the other three,
However note that:
The the best case running time for insertion sort is
+ The the best case running time for insertion sort is Ω(n) while the
@@ -4110,8 +4154,8 @@ class="zplmr7t-">) The worst case running time
+ class="enumerate" id="x12-105018x2">
+ The worst case running time
for quicksort is O(); the algorithm implemented here follows the
apply;
The worst case running time for merge-sort and heap-sort is
+ class="enumerate" id="x12-105020x3">
+ The worst case running time for merge-sort and heap-sort is
O(n log n) as the average case;
-
-
-
The merge-sort algorithm is implemented to take advantage of
+ class="enumerate" id="x12-105022x4">
+ The merge-sort algorithm is implemented to take advantage of
subsequences that may be already in the desired ordering prior to
the subroutine call; this situation is relatively common when dealing
with groups of indices of sparse matrix entries, thus merge-sort is
diff --git a/docs/psblas-3.9.pdf b/docs/psblas-3.9.pdf
index a0d16c37..4bbd69b4 100644
--- a/docs/psblas-3.9.pdf
+++ b/docs/psblas-3.9.pdf
@@ -21904,88 +21904,116 @@ endstream
endobj
1742 0 obj
<<
-/Length 6342
+/Length 7828
>>
stream
0 g 0 G
0 g 0 G
BT
-/F75 11.9552 Tf 150.705 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ -0.371 -19.314 Td [(psb)]TJ
+/F75 11.9552 Tf 150.705 706.129 Td [(6.27)-1000(Sorting)-250(utilities)-250(\227)]TJ -0.371 -18.964 Td [(psb)]TJ
ET
q
-1 0 0 1 170.969 687.014 cm
+1 0 0 1 170.969 687.364 cm
[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S
Q
BT
-/F75 11.9552 Tf 174.555 686.815 Td [(isort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Insertion-sort)-250(algorithm)]TJ -24.221 -12.136 Td [(psb)]TJ
+/F75 11.9552 Tf 174.555 687.165 Td [(isort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Insertion-sort)-250(algorithm)]TJ -24.221 -11.955 Td [(psb)]TJ
ET
q
-1 0 0 1 170.969 674.878 cm
+1 0 0 1 170.969 675.409 cm
[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S
Q
BT
-/F75 11.9552 Tf 174.555 674.679 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -12.136 Td [(psb)]TJ
+/F75 11.9552 Tf 174.555 675.21 Td [(msort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Merge-sort)-250(algorithm)]TJ -24.221 -11.955 Td [(psb)]TJ
ET
q
-1 0 0 1 170.969 662.742 cm
+1 0 0 1 170.969 663.454 cm
[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S
Q
BT
-/F75 11.9552 Tf 174.555 662.543 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -12.136 Td [(psb)]TJ
+/F75 11.9552 Tf 174.555 663.255 Td [(qsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Quicksort)-250(algorithm)]TJ -24.221 -11.955 Td [(psb)]TJ
ET
q
-1 0 0 1 170.969 650.607 cm
+1 0 0 1 170.969 651.499 cm
[]0 d 0 J 0.398 w 0 0 m 3.587 0 l S
Q
BT
-/F75 11.9552 Tf 174.555 650.407 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ
+/F75 11.9552 Tf 174.555 651.3 Td [(hsort)-250(\227)-250(Sorting)-250(by)-250(the)-250(Heapsort)-250(algorithm)]TJ
0 g 0 G
0 g 0 G
-/F145 9.9626 Tf -23.85 -20.648 Td [(call)-525(psb_isort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_msort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 573.426 Tm [(These)-314(serial)-313(r)17(outines)-313(sort)-314(a)-314(sequence)]TJ/F78 9.9626 Tf 1 0 0 1 335.711 573.426 Tm [(X)]TJ/F84 9.9626 Tf 1.02 0 0 1 346.436 573.426 Tm [(into)-314(ascending)-313(or)-314(descending)-314(or)18(-)]TJ 1.02 0 0 1 150.705 561.471 Tm [(der)73(.)-328(The)-253(ar)18(gument)-253(meaning)-253(is)-253(identical)-253(for)-253(all)-253(calls;)-257(the)-253(only)-253(dif)17(f)1(er)17(ence)-253(is)-253(the)]TJ 1 0 0 1 150.705 549.516 Tm [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ
+/F145 9.9626 Tf -23.85 -19.808 Td [(call)-525(psb_isort\050x,ix,dir,flag,reord\051)]TJ 0 -11.955 Td [(call)-525(psb_msort\050x,ix,dir,flag,reord\051)]TJ 0 -11.955 Td [(call)-525(psb_qsort\050x,ix,dir,flag,reord\051)]TJ 0 -11.955 Td [(call)-525(psb_hsort\050x,ix,dir,flag,reord\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 165.649 575.819 Tm [(These)-314(serial)-313(r)17(outines)-313(sort)-314(a)-314(sequence)]TJ/F78 9.9626 Tf 1 0 0 1 335.711 575.819 Tm [(X)]TJ/F84 9.9626 Tf 1.02 0 0 1 346.436 575.819 Tm [(into)-314(ascending)-313(or)-314(descending)-314(or)18(-)]TJ 1.02 0 0 1 150.705 563.864 Tm [(der)73(.)-328(The)-253(ar)18(gument)-253(meaning)-253(is)-253(identical)-253(for)-253(all)-253(calls;)-257(the)-253(only)-253(dif)17(f)1(er)17(ence)-253(is)-253(the)]TJ 1 0 0 1 150.705 551.909 Tm [(algorithm)-250(used)-250(to)-250(accomplish)-250(the)-250(task)-250(\050see)-250(Usage)-250(Notes)-250(below\051.)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -20.467 Td [(T)90(ype:)]TJ
+/F75 9.9626 Tf 0 -19.808 Td [(T)90(ype:)]TJ
0 g 0 G
/F84 9.9626 Tf 29.439 0 Td [(Asynchr)18(onous.)]TJ
0 g 0 G
-/F75 9.9626 Tf -29.439 -20.648 Td [(On)-250(Entry)]TJ
+/F75 9.9626 Tf -29.439 -19.866 Td [(On)-250(Entry)]TJ
0 g 0 G
0 g 0 G
- 0 -20.648 Td [(x)]TJ
+ 0 -19.866 Td [(x)]TJ
0 g 0 G
-/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.956 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ
+/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(to)-250(be)-250(sorted.)]TJ 14.944 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ
0 g 0 G
-/F75 9.9626 Tf -24.906 -20.648 Td [(ix)]TJ
+/F75 9.9626 Tf -24.906 -19.866 Td [(ix)]TJ
0 g 0 G
-/F84 9.9626 Tf 12.891 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.707 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(array)-250(of)-250(\050at)-250(least\051)-250(the)-250(same)-250(size)-250(as)]TJ/F78 9.9626 Tf 254.19 0 Td [(X)]TJ/F84 9.9626 Tf 7.536 0 Td [(.)]TJ
+/F84 9.9626 Tf 12.891 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.707 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 0.98 0 0 1 175.611 424.682 Tm [(Speci\002ed)-198(as:)-288(an)-198(integer)-198(array)-198(of)-198(\050at)-198(least\051)-198(t)1(he)-198(same)-198(size)-198(as)]TJ/F78 9.9626 Tf 1 0 0 1 418.918 424.682 Tm [(X)]TJ/F84 9.9626 Tf 0.98 0 0 1 426.455 424.682 Tm [(.)-297(This)-198(ar)18(gument)]TJ 1 0 0 1 175.611 412.726 Tm [(is)-250(r)18(equir)18(ed)-250(when)]TJ/F78 9.9626 Tf 76.926 0 Td [(r)-17(e)-25(o)-25(r)-17(d)]TJ/F192 10.3811 Tf 24.884 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ
+ET
+q
+1 0 0 1 303.745 412.926 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 306.858 412.726 Td [(s)-25(o)-25(r)-35(t)]TJ
+ET
+q
+1 0 0 1 323.919 412.926 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 327.032 412.726 Td [(n)-25(o)-25(r)-17(e)-25(o)-25(r)-17(d)]TJ
+ET
+q
+1 0 0 1 360.083 412.926 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 363.366 412.726 Td [(x)]TJ
+ET
+q
+1 0 0 1 369.169 412.926 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F84 9.9626 Tf 372.158 412.726 Td [(.)]TJ
0 g 0 G
-/F75 9.9626 Tf -286.632 -20.648 Td [(dir)]TJ
+/F75 9.9626 Tf -221.453 -19.866 Td [(dir)]TJ
0 g 0 G
/F84 9.9626 Tf 17.952 0 Td [(The)-250(desir)18(ed)-250(or)18(dering.)]TJ 6.646 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ -61.878 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)-250(value:)]TJ
0 g 0 G
-/F75 9.9626 Tf 0 -20.648 Td [(Integer)-250(and)-250(real)-250(data:)]TJ
+/F75 9.9626 Tf 0 -19.867 Td [(Integer)-250(and)-250(real)-250(data:)]TJ
0 g 0 G
-/F145 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 339.655 354.078 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 345.778 354.078 Tm [(psb_sort_down_)]TJ/F84 9.9626 Tf 1.02 0 0 1 419.003 354.078 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 425.126 354.078 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 354.078 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 197.529 342.122 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F145 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 62.765 0 Td [(.)]TJ
+/F145 9.9626 Tf 101.28 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 339.655 349.083 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 345.778 349.083 Tm [(psb_sort_down_)]TJ/F84 9.9626 Tf 1.02 0 0 1 419.003 349.083 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 425.126 349.083 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 1.02 0 0 1 493.121 349.083 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 197.529 337.128 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 78.455 0 Td [(;)-250(default)]TJ/F145 9.9626 Tf 38.784 0 Td [(psb_sort_up_)]TJ/F84 9.9626 Tf 62.765 0 Td [(.)]TJ
0 g 0 G
-/F75 9.9626 Tf -201.922 -16.301 Td [(Complex)-250(data:)]TJ
+/F75 9.9626 Tf -201.922 -15.881 Td [(Complex)-250(data:)]TJ
0 g 0 G
-/F145 9.9626 Tf 70.287 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 313.892 325.821 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 318.345 325.821 Tm [(psb_lsort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 396.8 325.821 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 401.254 325.821 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 469.248 325.821 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 473.701 325.821 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 552.157 325.821 Tm [(;)]TJ 1 0 0 1 197.529 313.866 Tm [(default)]TJ/F145 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ
+/F145 9.9626 Tf 70.287 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 313.892 321.247 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 318.345 321.247 Tm [(psb_lsort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 396.8 321.247 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 401.254 321.247 Tm [(psb_asort_up_)]TJ/F84 9.9626 Tf 0.98 0 0 1 469.248 321.247 Tm [(,)]TJ/F145 9.9626 Tf 1 0 0 1 473.701 321.247 Tm [(psb_asort_down_)]TJ/F84 9.9626 Tf 0.98 0 0 1 552.157 321.247 Tm [(;)]TJ 1 0 0 1 197.529 309.292 Tm [(default)]TJ/F145 9.9626 Tf 33.803 0 Td [(psb_lsort_up_)]TJ/F84 9.9626 Tf 67.994 0 Td [(.)]TJ
0 g 0 G
-/F75 9.9626 Tf -148.621 -20.648 Td [(\003ag)]TJ
+/F75 9.9626 Tf -148.621 -19.867 Td [(\003ag)]TJ
0 g 0 G
-/F84 9.9626 Tf 21.091 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F78 9.9626 Tf 171.519 0 Td [(I)-81(X)]TJ/F84 9.9626 Tf 11.661 0 Td [(.)]TJ -179.673 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 0.98 0 0 1 175.611 269.307 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F145 9.9626 Tf 1 0 0 1 301.54 269.307 Tm [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 392.349 269.307 Tm [(or)]TJ/F145 9.9626 Tf 1 0 0 1 403.429 269.307 Tm [(psb_sort_keep_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 497.575 269.307 Tm [(;)]TJ 1 0 0 1 175.611 257.352 Tm [(default)]TJ/F145 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 88.916 0 Td [(.)]TJ
+/F84 9.9626 Tf 21.091 0 Td [(Whether)-250(to)-250(keep)-250(the)-250(original)-250(values)-250(in)]TJ/F78 9.9626 Tf 171.519 0 Td [(I)-81(X)]TJ/F84 9.9626 Tf 11.661 0 Td [(.)]TJ -179.673 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 0.98 0 0 1 175.611 265.515 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F145 9.9626 Tf 1 0 0 1 301.54 265.515 Tm [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 392.349 265.515 Tm [(or)]TJ/F145 9.9626 Tf 1 0 0 1 403.429 265.515 Tm [(psb_sort_keep_idx_)]TJ/F84 9.9626 Tf 0.98 0 0 1 497.575 265.515 Tm [(;)]TJ 1 0 0 1 175.611 253.56 Tm [(default)]TJ/F145 9.9626 Tf 33.803 0 Td [(psb_sort_ovw_idx_)]TJ/F84 9.9626 Tf 88.916 0 Td [(.)]TJ
0 g 0 G
-/F75 9.9626 Tf -147.625 -22.64 Td [(On)-250(Return)]TJ
+/F75 9.9626 Tf -147.625 -19.866 Td [(reord)]TJ
0 g 0 G
+/F84 9.9626 Tf 0.984 0 0 1 179.546 233.694 Tm [(Whether)-253(to)-254(r)19(eor)18(der)-253(the)-254(input)-253(vector)]TJ/F78 9.9626 Tf 1 0 0 1 337.115 233.694 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 344.804 233.694 Tm [(or)-253(just)-254(r)19(eturn)]TJ/F78 9.9626 Tf 1 0 0 1 404.732 233.694 Tm [(I)-81(X)]TJ/F84 9.9626 Tf 0.984 0 0 1 418.877 233.694 Tm [(for)-253(further)-254(usage.)]TJ 1 0 0 1 175.303 221.738 Tm [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(optional)]TJ/F84 9.9626 Tf 38.187 0 Td [(.)]TJ 0.98 0 0 1 175.611 209.783 Tm [(Speci\002ed)-194(as:)-286(an)-193(integer)-194(value)]TJ/F145 9.9626 Tf 1 0 0 1 301.54 209.783 Tm [(psb_sort_reord_x_)]TJ/F84 9.9626 Tf 0.98 0 0 1 392.349 209.783 Tm [(or)]TJ/F145 9.9626 Tf 1 0 0 1 403.429 209.783 Tm [(psb_sort_noreord_x_)]TJ/F84 9.9626 Tf 0.98 0 0 1 502.806 209.783 Tm [(;)]TJ 1 0 0 1 175.611 197.828 Tm [(default)]TJ/F145 9.9626 Tf 33.803 0 Td [(psb_sort_reord_x_)]TJ/F84 9.9626 Tf 88.916 0 Td [(.)]TJ
0 g 0 G
- 0 -20.648 Td [(x)]TJ
+/F75 9.9626 Tf -147.625 -21.771 Td [(On)-250(Return)]TJ
0 g 0 G
-/F84 9.9626 Tf 9.654 0 Td [(The)-250(sequence)-250(of)-250(values,)-250(in)-250(the)-250(chosen)-250(or)18(dering.)]TJ 14.944 -11.956 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ
0 g 0 G
-/F75 9.9626 Tf -24.906 -20.648 Td [(ix)]TJ
+ 0 -19.866 Td [(x)]TJ
0 g 0 G
-/F84 9.9626 Tf 12.891 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.707 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 0.996 0 0 1 175.223 145.595 Tm [(An)-251(integer)-250(array)-251(of)-251(rank)-250(1,)-251(whose)-251(entries)-250(ar)18(e)-251(moved)-251(to)-250(the)-251(same)-251(position)]TJ 1 0 0 1 175.611 133.64 Tm [(as)-250(the)-250(corr)18(esponding)-250(entries)-250(in)]TJ/F78 9.9626 Tf 138.215 0 Td [(x)]TJ/F84 9.9626 Tf 5.206 0 Td [(.)]TJ
+/F84 9.9626 Tf 0.984 0 0 1 160.359 156.191 Tm [(The)-254(sequence)-254(of)-254(values;)-254(if)]TJ/F145 9.9626 Tf 1 0 0 1 274.16 156.191 Tm [(reord=psb_sort_reord_x_)]TJ/F84 9.9626 Tf 0.984 0 0 1 396.947 156.191 Tm [(it)-254(will)-254(be)-254(in)-254(the)-254(chosen)]TJ 1 0 0 1 175.611 144.236 Tm [(or)18(dering.)]TJ -0.308 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 23.999 0 Td [(required)]TJ/F84 9.9626 Tf 39.293 0 Td [(.)]TJ -62.984 -11.955 Td [(Speci\002ed)-250(as:)-310(an)-250(integer)74(,)-250(r)18(eal)-250(or)-250(complex)-250(array)-250(of)-250(rank)-250(1.)]TJ
0 g 0 G
- -3.944 -43.202 Td [(110)]TJ
+ 139.477 -29.888 Td [(110)]TJ
0 g 0 G
ET
@@ -21993,117 +22021,152 @@ endstream
endobj
1746 0 obj
<<
-/Length 9569
+/Length 11593
>>
stream
0 g 0 G
0 g 0 G
+0 g 0 G
BT
-/F75 11.9552 Tf 99.895 706.129 Td [(Notes)]TJ
+/F75 9.9626 Tf 99.895 706.129 Td [(ix)]TJ
0 g 0 G
-/F84 9.9626 Tf 12.454 -19.925 Td [(1.)]TJ
+/F84 9.9626 Tf 12.892 0 Td [(A)-250(vector)-250(of)-250(indices.)]TJ 11.706 -11.955 Td [(T)90(ype:)]TJ/F75 9.9626 Tf 27.088 0 Td [(Optional)]TJ/F84 9.9626 Tf 1.02 0 0 1 124.413 682.219 Tm [(An)-353(integer)-353(array)-354(of)-353(rank)-353(1,)-380(whose)]TJ/F78 9.9626 Tf 1 0 0 1 285.438 682.219 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 288.402 682.219 Tm [(-th)-353(entry)-353(gives)-354(the)-353(position)-353(of)-353(the)]TJ 1 0 0 1 124.473 670.263 Tm [(\050sorted\051)-250(value)-250(of)]TJ/F78 9.9626 Tf 75.152 0 Td [(x)]TJ/F84 9.9626 Tf 7.696 0 Td [(in)-250(the)-250(original)-250(sequence.)]TJ/F75 11.9552 Tf -107.426 -21.917 Td [(Notes)]TJ
+0 g 0 G
+/F84 9.9626 Tf 12.454 -19.926 Td [(1.)]TJ
0 g 0 G
- 1.02 0 0 1 124.802 686.204 Tm [(For)-318(integer)-317(or)-318(r)18(eal)-318(data)-318(the)-318(sorting)-317(can)-318(be)-318(performed)-317(in)-318(the)-318(up/down)]TJ 1 0 0 1 124.802 674.248 Tm [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ
+ 1.02 0 0 1 124.802 628.42 Tm [(For)-318(integer)-317(or)-318(r)18(eal)-318(data)-318(the)-318(sorting)-317(can)-318(be)-318(performed)-317(in)-318(the)-318(up/down)]TJ 1 0 0 1 124.802 616.465 Tm [(dir)18(ection,)-250(on)-250(the)-250(natural)-250(or)-250(absolute)-250(values;)]TJ
0 g 0 G
-12.453 -19.925 Td [(2.)]TJ
0 g 0 G
- 1.02 0 0 1 124.802 654.323 Tm [(For)-287(complex)-288(data)-287(the)-287(sorting)-288(can)-287(be)-287(done)-288(in)-287(a)-287(lexicographic)-288(or)18(der)-287(\050i.e.:)]TJ 1.007 0 0 1 124.802 642.368 Tm [(sort)-247(on)-248(the)-247(r)18(eal)-248(part)-247(with)-248(tie)1(s)-248(br)18(oken)-247(accor)17(ding)-247(to)-247(the)-248(imaginary)-247(part\051)-248(or)]TJ 1 0 0 1 124.802 630.413 Tm [(on)-250(the)-250(absolute)-250(values;)]TJ
+ 1.02 0 0 1 124.802 596.54 Tm [(For)-287(complex)-288(data)-287(the)-287(sorting)-288(can)-287(be)-287(done)-288(in)-287(a)-287(lexicographic)-288(or)18(der)-287(\050i.e.:)]TJ 1.007 0 0 1 124.802 584.585 Tm [(sort)-247(on)-248(the)-247(r)18(eal)-248(part)-247(with)-248(tie)1(s)-248(br)18(oken)-247(accor)17(ding)-247(to)-247(the)-248(imaginary)-247(part\051)-248(or)]TJ 1 0 0 1 124.802 572.629 Tm [(on)-250(the)-250(absolute)-250(values;)]TJ
0 g 0 G
-12.453 -19.925 Td [(3.)]TJ
0 g 0 G
- 0.98 0 0 1 124.493 610.488 Tm [(The)-240(r)18(outines)-240(r)18(et)1(urn)-241(the)-240(items)-240(in)-240(the)-240(chosen)-240(or)18(dering;)-245(the)-240(output)-240(dif)18(fer)18(ence)]TJ 0.98 0 0 1 124.802 598.532 Tm [(is)-256(the)-256(handling)-256(of)-256(ties)-256(\050i.e.)-318(items)-256(with)-256(an)-256(equal)-256(value\051)-256(in)-256(the)-256(original)-256(input.)]TJ 1 0 0 1 124.304 586.577 Tm [(W)55(ith)-250(the)-250(insertion-sort)-250(or)-250(mer)18(ge-sort)-250(algorithms)-250(ties)-250(ar)18(e)-250(pr)18(eserved)-250(in)-250(the)]TJ 0.997 0 0 1 124.802 574.622 Tm [(same)-250(r)18(elative)-250(or)18(der)-251(as)-250(they)-250(had)-251(i)1(n)-251(the)-250(original)-250(sequence,)-251(while)-250(this)-250(is)-250(not)]TJ 1 0 0 1 124.802 562.667 Tm [(guaranteed)-250(for)-250(quicksort)-250(or)-250(heapsort;)]TJ
+ 0.98 0 0 1 124.493 552.704 Tm [(The)-240(r)18(outines)-240(r)18(et)1(urn)-241(the)-240(items)-240(in)-240(the)-240(chosen)-240(or)18(dering;)-245(the)-240(output)-240(dif)18(fer)18(ence)]TJ 0.98 0 0 1 124.802 540.749 Tm [(is)-256(the)-256(handling)-256(of)-256(ties)-256(\050i.e.)-318(items)-256(with)-256(an)-256(equal)-256(value\051)-256(in)-256(the)-256(original)-256(input.)]TJ 1 0 0 1 124.304 528.794 Tm [(W)55(ith)-250(the)-250(insertion-sort)-250(or)-250(mer)18(ge-sort)-250(algorithms)-250(ties)-250(ar)18(e)-250(pr)18(eserved)-250(in)-250(the)]TJ 0.997 0 0 1 124.802 516.839 Tm [(same)-250(r)18(elative)-250(or)18(der)-251(as)-250(they)-250(had)-251(i)1(n)-251(the)-250(original)-250(sequence,)-251(while)-250(this)-250(is)-250(not)]TJ 1 0 0 1 124.802 504.884 Tm [(guaranteed)-250(for)-250(quicksort)-250(or)-250(heapsort;)]TJ
0 g 0 G
- -12.453 -19.925 Td [(4.)]TJ
+ -12.453 -19.926 Td [(4.)]TJ
0 g 0 G
- 0.98 0 0 1 124.802 542.742 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 135.146 542.742 Tm [(f)-160(l)-70(a)-47(g)]TJ/F192 10.3811 Tf 20.72 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ
+ 0.99 0 0 1 124.802 484.958 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 133.93 484.958 Tm [(r)-17(e)-25(o)-25(r)-17(d)]TJ/F192 10.3811 Tf 24.891 0 Td [(=)]TJ/F78 9.9626 Tf 11.642 0 Td [(p)-25(s)-25(b)]TJ
ET
q
-1 0 0 1 182.189 542.941 cm
+1 0 0 1 185.152 485.158 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 185.303 542.742 Td [(s)-25(o)-25(r)-35(t)]TJ
+/F78 9.9626 Tf 188.266 484.958 Td [(s)-25(o)-25(r)-35(t)]TJ
ET
q
-1 0 0 1 202.364 542.941 cm
+1 0 0 1 205.326 485.158 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 205.477 542.742 Td [(o)-35(v)-25(w)]TJ
+/F78 9.9626 Tf 208.44 484.958 Td [(n)-25(o)-25(r)-17(e)-25(o)-25(r)-17(d)]TJ
ET
q
-1 0 0 1 223.394 542.941 cm
+1 0 0 1 241.49 485.158 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 226.438 542.742 Td [(i)-32(d)-42(x)]TJ
+/F78 9.9626 Tf 244.773 484.958 Td [(x)]TJ
ET
q
-1 0 0 1 240.729 542.941 cm
+1 0 0 1 250.576 485.158 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 0.98 0 0 1 246.101 542.742 Tm [(then)-244(the)-244(entries)-244(in)]TJ/F78 9.9626 Tf 1 0 0 1 326.032 542.742 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.587 0 Td [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 338.769 542.742 Tm [(1)]TJ 1 0 0 1 346.542 542.742 Tm [(:)]TJ/F78 9.9626 Tf 5.507 0 Td [(n)]TJ/F192 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.37 542.742 Tm [(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 393.733 542.742 Tm [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 401.779 542.742 Tm [(is)-244(the)-244(size)]TJ 0.984 0 0 1 124.802 530.786 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 136.206 530.786 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 143.904 530.786 Tm [(ar)18(e)-254(initialized)-254(to)]TJ/F78 9.9626 Tf 1 0 0 1 216.929 530.786 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.588 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F190 10.3811 Tf 7.046 0 Td [(\040)]TJ/F78 9.9626 Tf 13.332 0 Td [(i)]TJ/F84 9.9626 Tf 0.984 0 0 1 256.15 530.786 Tm [(;)-254(thus,)-255(upon)-254(r)18(eturn)-254(fr)18(om)-254(the)-254(subr)18(outine,)-254(for)]TJ 1.02 0 0 1 124.802 518.831 Tm [(each)-260(index)]TJ/F78 9.9626 Tf 1 0 0 1 175.703 518.831 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 181.308 518.831 Tm [(we)-260(have)-260(in)]TJ/F78 9.9626 Tf 1 0 0 1 233.102 518.831 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.588 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 255.772 518.831 Tm [(the)-260(position)-260(that)-260(the)-259(item)]TJ/F78 9.9626 Tf 1 0 0 1 371.842 518.831 Tm [(x)]TJ/F192 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 391.255 518.831 Tm [(occupied)-260(in)]TJ 1 0 0 1 124.802 506.876 Tm [(the)-250(original)-250(data)-250(sequence;)]TJ
+/F84 9.9626 Tf 0.99 0 0 1 253.565 484.958 Tm [(,)-253(then)-253(the)-253(input)-253(sequence)]TJ/F78 9.9626 Tf 1 0 0 1 365.544 484.958 Tm [(x)]TJ/F84 9.9626 Tf 0.99 0 0 1 373.244 484.958 Tm [(is)-253(not)-253(r)18(eor)19(der)18(ed;)]TJ 1.02 0 0 1 124.802 473.003 Tm [(the)-254(output)-255(i)1(s)-255(given)-254(in)]TJ/F78 9.9626 Tf 1 0 0 1 223.674 473.003 Tm [(i)-49(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 232.137 473.003 Tm [(.)-331(Calling)-255(without)]TJ/F78 9.9626 Tf 1 0 0 1 311.637 473.003 Tm [(i)-49(x)]TJ/F84 9.9626 Tf 1.02 0 0 1 322.684 473.003 Tm [(in)-254(this)-255(case)-254(is)-254(\003agged)-254(as)-255(an)]TJ 1 0 0 1 124.802 461.048 Tm [(err)18(or;)]TJ
0 g 0 G
-12.453 -19.925 Td [(5.)]TJ
0 g 0 G
- 1.02 0 0 1 124.802 486.951 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 136.291 486.951 Tm [(f)-160(l)-70(a)-47(g)]TJ/F192 10.3811 Tf 22.147 0 Td [(=)]TJ/F78 9.9626 Tf 13.061 0 Td [(p)-25(s)-25(b)]TJ
+ 0.98 0 0 1 124.802 441.123 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 135.146 441.123 Tm [(f)-160(l)-70(a)-47(g)]TJ/F192 10.3811 Tf 20.72 0 Td [(=)]TJ/F78 9.9626 Tf 11.634 0 Td [(p)-25(s)-25(b)]TJ
+ET
+q
+1 0 0 1 182.189 441.322 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 185.303 441.123 Td [(s)-25(o)-25(r)-35(t)]TJ
+ET
+q
+1 0 0 1 202.364 441.322 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 205.477 441.123 Td [(o)-35(v)-25(w)]TJ
+ET
+q
+1 0 0 1 223.394 441.322 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F78 9.9626 Tf 226.438 441.123 Td [(i)-32(d)-42(x)]TJ
+ET
+q
+1 0 0 1 240.729 441.322 cm
+[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
+Q
+BT
+/F84 9.9626 Tf 0.98 0 0 1 246.101 441.123 Tm [(then)-244(the)-244(entries)-244(in)]TJ/F78 9.9626 Tf 1 0 0 1 326.032 441.123 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.587 0 Td [(\050)]TJ/F84 9.9626 Tf 0.98 0 0 1 338.769 441.123 Tm [(1)]TJ 1 0 0 1 346.542 441.123 Tm [(:)]TJ/F78 9.9626 Tf 5.507 0 Td [(n)]TJ/F192 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.37 441.123 Tm [(wher)18(e)]TJ/F78 9.9626 Tf 1 0 0 1 393.733 441.123 Tm [(n)]TJ/F84 9.9626 Tf 0.98 0 0 1 401.779 441.123 Tm [(is)-244(the)-244(size)]TJ 0.984 0 0 1 124.802 429.167 Tm [(of)]TJ/F78 9.9626 Tf 1 0 0 1 136.206 429.167 Tm [(x)]TJ/F84 9.9626 Tf 0.984 0 0 1 143.904 429.167 Tm [(ar)18(e)-254(initialized)-254(to)]TJ/F78 9.9626 Tf 1 0 0 1 216.929 429.167 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.588 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F190 10.3811 Tf 7.046 0 Td [(\040)]TJ/F78 9.9626 Tf 13.332 0 Td [(i)]TJ/F84 9.9626 Tf 0.984 0 0 1 256.15 429.167 Tm [(;)-254(thus,)-255(upon)-254(r)18(eturn)-254(fr)18(om)-254(the)-254(subr)18(outine,)-254(for)]TJ 1.02 0 0 1 124.802 417.212 Tm [(each)-260(index)]TJ/F78 9.9626 Tf 1 0 0 1 175.703 417.212 Tm [(i)]TJ/F84 9.9626 Tf 1.02 0 0 1 181.308 417.212 Tm [(we)-260(have)-260(in)]TJ/F78 9.9626 Tf 1 0 0 1 233.102 417.212 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.588 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 255.772 417.212 Tm [(the)-260(position)-260(that)-260(the)-259(item)]TJ/F78 9.9626 Tf 1 0 0 1 371.842 417.212 Tm [(x)]TJ/F192 10.3811 Tf 5.33 0 Td [(\050)]TJ/F78 9.9626 Tf 4.204 0 Td [(i)]TJ/F192 10.3811 Tf 3.088 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 391.255 417.212 Tm [(occupied)-260(in)]TJ 1 0 0 1 124.802 405.257 Tm [(the)-250(original)-250(data)-250(sequence;)]TJ
+0 g 0 G
+ -12.453 -19.925 Td [(6.)]TJ
+0 g 0 G
+ 1.02 0 0 1 124.802 385.332 Tm [(If)]TJ/F78 9.9626 Tf 1 0 0 1 136.291 385.332 Tm [(f)-160(l)-70(a)-47(g)]TJ/F192 10.3811 Tf 22.147 0 Td [(=)]TJ/F78 9.9626 Tf 13.061 0 Td [(p)-25(s)-25(b)]TJ
ET
q
-1 0 0 1 186.188 487.15 cm
+1 0 0 1 186.188 385.531 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 189.302 486.951 Td [(s)-25(o)-25(r)-35(t)]TJ
+/F78 9.9626 Tf 189.302 385.332 Td [(s)-25(o)-25(r)-35(t)]TJ
ET
q
-1 0 0 1 206.362 487.15 cm
+1 0 0 1 206.362 385.531 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 209.476 486.951 Td [(k)-30(e)-25(e)-80(p)]TJ
+/F78 9.9626 Tf 209.476 385.332 Td [(k)-30(e)-25(e)-80(p)]TJ
ET
q
-1 0 0 1 228.698 487.15 cm
+1 0 0 1 228.698 385.531 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F78 9.9626 Tf 231.742 486.951 Td [(i)-32(d)-42(x)]TJ
+/F78 9.9626 Tf 231.742 385.332 Td [(i)-32(d)-42(x)]TJ
ET
q
-1 0 0 1 246.033 487.15 cm
+1 0 0 1 246.033 385.531 cm
[]0 d 0 J 0.398 w 0 0 m 2.989 0 l S
Q
BT
-/F84 9.9626 Tf 1.02 0 0 1 252.283 486.951 Tm [(the)-321(r)18(outine)-321(will)-321(assume)-321(that)-321(the)-321(entries)-321(in)]TJ/F78 9.9626 Tf 1 0 0 1 124.857 474.996 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.587 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)]TJ/F192 10.3811 Tf 2.74 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ
+/F84 9.9626 Tf 1.02 0 0 1 252.283 385.332 Tm [(the)-321(r)18(outine)-321(will)-321(assume)-321(that)-321(the)-321(entries)-321(in)]TJ/F78 9.9626 Tf 1 0 0 1 124.857 373.377 Tm [(i)-49(x)]TJ/F192 10.3811 Tf 8.587 0 Td [(\050)]TJ/F84 9.9626 Tf 4.274 0 Td [(:)]TJ/F192 10.3811 Tf 2.74 0 Td [(\051)]TJ/F84 9.9626 Tf 6.64 0 Td [(have)-250(alr)18(eady)-250(been)-250(initialized)-250(by)-250(the)-250(user;)]TJ
0 g 0 G
- -34.749 -19.926 Td [(6.)]TJ
+ -34.749 -19.926 Td [(7.)]TJ
0 g 0 G
- 0.98 0 0 1 124.493 455.07 Tm [(Thr)18(ee)-256(sorting)-256(algorithms)-256(have)-256(a)-256(similar)]TJ/F78 9.9626 Tf 1 0 0 1 296.993 455.07 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.662 0 Td [(n)]TJ/F192 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 344.691 455.07 Tm [(expected)-256(r)8(unning)-256(time,)]TJ 1.017 0 0 1 124.384 443.115 Tm [(wher)18(eas)-247(insertion)-246(sort)-247(has)-246(an)-247(expected)-246(r)8(unning)-247(time)]TJ/F78 9.9626 Tf 1 0 0 1 360.734 443.115 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.617 Td [(2)]TJ/F192 10.3811 Tf 4.408 -3.617 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 387.23 443.115 Tm [(;)-247(of)-246(the)-247(other)]TJ 0.999 0 0 1 124.802 431.16 Tm [(thr)18(ee,)-250(in)-250(the)-249(average)-250(case)-250(quicksort)-250(will)-249(be)-250(the)-250(fastest)-250(and)-249(mer)18(ge-sort)-250(the)]TJ 1 0 0 1 124.802 419.205 Tm [(slowest.)-310(However)-250(note)-250(that:)]TJ
+ 0.98 0 0 1 124.493 353.451 Tm [(Thr)18(ee)-256(sorting)-256(algorithms)-256(have)-256(a)-256(similar)]TJ/F78 9.9626 Tf 1 0 0 1 296.993 353.451 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.662 0 Td [(n)]TJ/F192 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 344.691 353.451 Tm [(expected)-256(r)8(unning)-256(time,)]TJ 1.017 0 0 1 124.384 341.496 Tm [(wher)18(eas)-247(insertion)-246(sort)-247(has)-246(an)-247(expected)-246(r)8(unning)-247(time)]TJ/F78 9.9626 Tf 1 0 0 1 360.734 341.496 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.617 Td [(2)]TJ/F192 10.3811 Tf 4.408 -3.617 Td [(\051)]TJ/F84 9.9626 Tf 1.017 0 0 1 387.23 341.496 Tm [(;)-247(of)-246(the)-247(other)]TJ 0.999 0 0 1 124.802 329.541 Tm [(thr)18(ee,)-250(in)-250(the)-249(average)-250(case)-250(quicksort)-250(will)-249(be)-250(the)-250(fastest)-250(and)-249(mer)18(ge-sort)-250(the)]TJ 1 0 0 1 124.802 317.586 Tm [(slowest.)-310(However)-250(note)-250(that:)]TJ
0 g 0 G
5.32 -19.925 Td [(\050a\051)]TJ
0 g 0 G
- 1.02 0 0 1 146.411 399.28 Tm [(The)-274(the)-273(best)-274(case)-274(r)8(unning)-274(ti)1(me)-274(for)-274(insertion)-274(so)1(rt)-274(is)]TJ/F243 9.9626 Tf 1 0 0 1 376.039 399.28 Tm [(W)]TJ/F192 10.3811 Tf 8.528 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F192 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.56 399.28 Tm [(while)-274(the)]TJ 1.02 0 0 1 146.72 387.324 Tm [(average)-359(and)-360(worst)-359(case)-359(ar)17(e)]TJ/F78 9.9626 Tf 1 0 0 1 275.57 387.324 Tm [(O)]TJ/F192 10.3811 Tf 7.999 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.617 Td [(2)]TJ/F192 10.3811 Tf 4.409 -3.617 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 302.065 387.324 Tm [(;)-416(however)-360(for)-359(very)-359(short)-360(input)]TJ 1 0 0 1 146.72 375.369 Tm [(sequences)-250(this)-250(is)-250(likely)-250(to)-250(be)-250(the)-250(fastest)-250(method;)]TJ
+ 1.02 0 0 1 146.411 297.661 Tm [(The)-274(the)-273(best)-274(case)-274(r)8(unning)-274(ti)1(me)-274(for)-274(insertion)-274(so)1(rt)-274(is)]TJ/F243 9.9626 Tf 1 0 0 1 376.039 297.661 Tm [(W)]TJ/F192 10.3811 Tf 8.528 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F192 10.3811 Tf 5.789 0 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 401.56 297.661 Tm [(while)-274(the)]TJ 1.02 0 0 1 146.72 285.705 Tm [(average)-359(and)-360(worst)-359(case)-359(ar)17(e)]TJ/F78 9.9626 Tf 1 0 0 1 275.57 285.705 Tm [(O)]TJ/F192 10.3811 Tf 7.999 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.617 Td [(2)]TJ/F192 10.3811 Tf 4.409 -3.617 Td [(\051)]TJ/F84 9.9626 Tf 1.02 0 0 1 302.065 285.705 Tm [(;)-416(however)-360(for)-359(very)-359(short)-360(input)]TJ 1 0 0 1 146.72 273.75 Tm [(sequences)-250(this)-250(is)-250(likely)-250(to)-250(be)-250(the)-250(fastest)-250(method;)]TJ
0 g 0 G
-17.126 -15.94 Td [(\050b\051)]TJ
0 g 0 G
- 0.98 0 0 1 146.411 359.429 Tm [(The)-241(worst)-240(case)-241(r)8(unning)-241(time)-240(for)-241(quicksort)-241(is)]TJ/F78 9.9626 Tf 1 0 0 1 338.306 359.429 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.616 Td [(2)]TJ/F192 10.3811 Tf 4.408 -3.616 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.802 359.429 Tm [(;)-245(the)-241(algorithm)-241(im-)]TJ 1.007 0 0 1 146.421 347.474 Tm [(plemented)-246(her)18(e)-246(follows)-246(the)-246(well-known)-246(median-of-thr)18(ee)-246(heuristics,)]TJ 1 0 0 1 146.72 335.519 Tm [(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ
+ 0.98 0 0 1 146.411 257.81 Tm [(The)-241(worst)-240(case)-241(r)8(unning)-241(time)-240(for)-241(quicksort)-241(is)]TJ/F78 9.9626 Tf 1 0 0 1 338.306 257.81 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 7.5716 Tf 5.664 3.616 Td [(2)]TJ/F192 10.3811 Tf 4.408 -3.616 Td [(\051)]TJ/F84 9.9626 Tf 0.98 0 0 1 364.802 257.81 Tm [(;)-245(the)-241(algorithm)-241(im-)]TJ 1.007 0 0 1 146.421 245.855 Tm [(plemented)-246(her)18(e)-246(follows)-246(the)-246(well-known)-246(median-of-thr)18(ee)-246(heuristics,)]TJ 1 0 0 1 146.72 233.9 Tm [(but)-250(the)-250(worst)-250(case)-250(may)-250(still)-250(apply;)]TJ
0 g 0 G
- -16.04 -15.941 Td [(\050c\051)]TJ
+ -16.04 -15.94 Td [(\050c\051)]TJ
0 g 0 G
- 0.98 0 0 1 146.411 319.578 Tm [(The)-194(worst)-194(case)-194(r)9(unning)-194(time)-194(for)-194(mer)18(ge-sort)-193(and)-194(heap-sort)-194(is)]TJ/F78 9.9626 Tf 1 0 0 1 402.204 319.578 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.663 0 Td [(n)]TJ/F192 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf -296.533 -11.955 Td [(as)-250(the)-250(average)-250(case;)]TJ
+ 0.98 0 0 1 146.411 217.96 Tm [(The)-194(worst)-194(case)-194(r)9(unning)-194(time)-194(for)-194(mer)18(ge-sort)-193(and)-194(heap-sort)-194(is)]TJ/F78 9.9626 Tf 1 0 0 1 402.204 217.96 Tm [(O)]TJ/F192 10.3811 Tf 8 0 Td [(\050)]TJ/F78 9.9626 Tf 4.274 0 Td [(n)]TJ/F84 9.9626 Tf 7.324 0 Td [(log)]TJ/F78 9.9626 Tf 15.663 0 Td [(n)]TJ/F192 10.3811 Tf 5.788 0 Td [(\051)]TJ/F84 9.9626 Tf -296.533 -11.956 Td [(as)-250(the)-250(average)-250(case;)]TJ
0 g 0 G
-17.704 -15.94 Td [(\050d\051)]TJ
0 g 0 G
- 1.005 0 0 1 146.411 291.683 Tm [(The)-249(mer)18(ge-sort)-249(algorithm)-249(is)-249(implemented)-249(to)-250(take)-249(advantage)-249(of)-249(sub-)]TJ 1.02 0 0 1 146.72 279.728 Tm [(sequences)-260(that)-261(may)-261(be)-260(alr)18(eady)-261(in)-260(the)-261(desir)18(ed)-261(or)18(dering)-261(prior)-260(to)-261(the)]TJ 1.02 0 0 1 146.72 267.773 Tm [(subr)18(outine)-321(call;)-358(this)-321(situation)-320(is)-321(r)18(elatively)-321(common)-320(when)-321(dealing)]TJ 0.98 0 0 1 146.301 255.818 Tm [(with)-239(gr)18(oups)-240(of)-239(indices)-239(of)-240(sparse)-239(matrix)-240(entries,)-242(thus)-240(mer)19(ge-sort)-240(is)-239(the)]TJ 1.02 0 0 1 146.421 243.862 Tm [(pr)18(eferr)17(ed)-268(choice)-268(when)-268(a)-268(sorting)-268(is)-268(needed)-268(by)-269(other)-268(r)18(outines)-268(in)-268(the)]TJ 1 0 0 1 146.72 231.907 Tm [(library)111(.)]TJ
+ 1.005 0 0 1 146.411 190.064 Tm [(The)-249(mer)18(ge-sort)-249(algorithm)-249(is)-249(implemented)-249(to)-250(take)-249(advantage)-249(of)-249(sub-)]TJ 1.02 0 0 1 146.72 178.109 Tm [(sequences)-260(that)-261(may)-261(be)-260(alr)18(eady)-261(in)-260(the)-261(desir)18(ed)-261(or)18(dering)-261(prior)-260(to)-261(the)]TJ 1.02 0 0 1 146.72 166.154 Tm [(subr)18(outine)-321(call;)-358(this)-321(situation)-320(is)-321(r)18(elatively)-321(common)-320(when)-321(dealing)]TJ 0.98 0 0 1 146.301 154.199 Tm [(with)-239(gr)18(oups)-240(of)-239(indices)-239(of)-240(sparse)-239(matrix)-240(entries,)-242(thus)-240(mer)19(ge-sort)-240(is)-239(the)]TJ 1.02 0 0 1 146.421 142.243 Tm [(pr)18(eferr)17(ed)-268(choice)-268(when)-268(a)-268(sorting)-268(is)-268(needed)-268(by)-269(other)-268(r)18(outines)-268(in)-268(the)]TJ 1 0 0 1 146.72 130.288 Tm [(library)111(.)]TJ
0 g 0 G
- 117.559 -141.469 Td [(111)]TJ
+ 117.559 -39.85 Td [(111)]TJ
0 g 0 G
ET
endstream
endobj
-1760 0 obj
+1761 0 obj
<<
/Length 172
>>
@@ -22119,7 +22182,7 @@ ET
endstream
endobj
-1764 0 obj
+1765 0 obj
<<
/Length 6837
>>
@@ -22211,7 +22274,7 @@ ET
endstream
endobj
-1770 0 obj
+1771 0 obj
<<
/Length 4738
>>
@@ -22267,7 +22330,7 @@ ET
endstream
endobj
-1776 0 obj
+1777 0 obj
<<
/Length 4507
>>
@@ -22320,7 +22383,7 @@ ET
endstream
endobj
-1784 0 obj
+1785 0 obj
<<
/Length 2607
>>
@@ -22378,7 +22441,7 @@ ET
endstream
endobj
-1788 0 obj
+1789 0 obj
<<
/Length 3383
>>
@@ -22440,7 +22503,7 @@ ET
endstream
endobj
-1792 0 obj
+1793 0 obj
<<
/Length 1171
>>
@@ -22477,7 +22540,7 @@ ET
endstream
endobj
-1796 0 obj
+1797 0 obj
<<
/Length 1466
>>
@@ -22514,7 +22577,7 @@ ET
endstream
endobj
-1800 0 obj
+1801 0 obj
<<
/Length 1287
>>
@@ -22551,7 +22614,7 @@ ET
endstream
endobj
-1804 0 obj
+1805 0 obj
<<
/Length 6065
>>
@@ -22611,7 +22674,7 @@ ET
endstream
endobj
-1809 0 obj
+1810 0 obj
<<
/Length 5230
>>
@@ -22734,7 +22797,7 @@ ET
endstream
endobj
-1817 0 obj
+1818 0 obj
<<
/Length 6196
>>
@@ -22794,7 +22857,7 @@ ET
endstream
endobj
-1821 0 obj
+1822 0 obj
<<
/Length 5025
>>
@@ -22922,19 +22985,19 @@ endobj
/Type /ObjStm
/N 100
/First 971
-/Length 9352
+/Length 9365
>>
stream
1717 0 1718 59 1713 118 1722 213 1720 352 1724 497 413 555 1721 612 1726 735 1728 853
1729 912 1730 971 1731 1030 1725 1089 1736 1211 1732 1368 1733 1513 1734 1660 1738 1807 417 1865
-1735 1922 1741 2030 1743 2148 421 2207 1740 2265 1745 2373 1747 2491 1748 2549 1749 2607 1750 2665
-1751 2723 1752 2781 1753 2839 1754 2897 1755 2955 1756 3013 1757 3071 1744 3129 1759 3266 1761 3384
-425 3443 1758 3501 1763 3582 1765 3700 429 3758 1766 3815 1767 3873 1762 3931 1769 4067 1771 4185
-433 4244 1772 4302 1773 4360 1768 4417 1775 4553 1777 4671 437 4729 1778 4786 1779 4844 1780 4902
-1774 4960 1783 5096 1785 5214 441 5273 1782 5331 1787 5426 1789 5544 445 5602 1786 5659 1791 5781
-1793 5899 449 5958 1790 6016 1795 6111 1797 6229 453 6287 1794 6344 1799 6439 1801 6557 457 6616
-1798 6674 1803 6769 1805 6887 461 6945 1802 7002 1808 7153 1810 7271 1811 7330 1812 7389 1813 7448
-1807 7507 1816 7645 1818 7763 465 7821 1815 7878 1820 8029 1822 8147 1823 8206 1824 8265 1825 8323
+1735 1922 1741 2030 1743 2148 421 2207 1740 2265 1745 2387 1747 2505 1748 2563 1749 2621 1750 2679
+1751 2736 1752 2794 1753 2852 1754 2910 1755 2968 1756 3026 1757 3084 1758 3142 1744 3200 1760 3337
+1762 3455 425 3514 1759 3572 1764 3653 1766 3771 429 3829 1767 3886 1768 3944 1763 4002 1770 4138
+1772 4256 433 4315 1773 4373 1774 4431 1769 4488 1776 4624 1778 4742 437 4800 1779 4857 1780 4915
+1781 4973 1775 5031 1784 5167 1786 5285 441 5344 1783 5402 1788 5497 1790 5615 445 5673 1787 5730
+1792 5852 1794 5970 449 6029 1791 6087 1796 6182 1798 6300 453 6358 1795 6415 1800 6510 1802 6628
+457 6687 1799 6745 1804 6840 1806 6958 461 7016 1803 7073 1809 7224 1811 7342 1812 7401 1813 7460
+1814 7519 1808 7578 1817 7716 1819 7834 465 7892 1816 7949 1821 8100 1823 8218 1824 8277 1825 8336
% 1717 0 obj
<<
/D [1714 0 R /XYZ 150.705 370.138 null]
@@ -23071,7 +23134,7 @@ stream
>>
% 1740 0 obj
<<
-/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R >>
+/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R /F192 942 0 R >>
/ProcSet [ /PDF /Text ]
>>
% 1745 0 obj
@@ -23088,365 +23151,365 @@ stream
>>
% 1748 0 obj
<<
-/D [1745 0 R /XYZ 99.895 701.929 null]
+/D [1745 0 R /XYZ 99.895 644.145 null]
>>
% 1749 0 obj
<<
-/D [1745 0 R /XYZ 99.895 668.729 null]
+/D [1745 0 R /XYZ 99.895 610.946 null]
>>
% 1750 0 obj
<<
-/D [1745 0 R /XYZ 99.895 624.894 null]
+/D [1745 0 R /XYZ 99.895 567.11 null]
>>
% 1751 0 obj
<<
-/D [1745 0 R /XYZ 99.895 555.872 null]
+/D [1745 0 R /XYZ 99.895 498.089 null]
>>
% 1752 0 obj
<<
-/D [1745 0 R /XYZ 99.895 500.082 null]
+/D [1745 0 R /XYZ 99.895 455.529 null]
>>
% 1753 0 obj
<<
-/D [1745 0 R /XYZ 99.895 468.201 null]
+/D [1745 0 R /XYZ 99.895 398.463 null]
>>
% 1754 0 obj
<<
-/D [1745 0 R /XYZ 99.895 413.068 null]
+/D [1745 0 R /XYZ 99.895 366.582 null]
>>
% 1755 0 obj
<<
-/D [1745 0 R /XYZ 99.895 370.567 null]
+/D [1745 0 R /XYZ 99.895 311.449 null]
>>
% 1756 0 obj
<<
-/D [1745 0 R /XYZ 99.895 330.717 null]
+/D [1745 0 R /XYZ 99.895 268.948 null]
>>
% 1757 0 obj
<<
-/D [1745 0 R /XYZ 99.895 302.821 null]
+/D [1745 0 R /XYZ 99.895 229.098 null]
+>>
+% 1758 0 obj
+<<
+/D [1745 0 R /XYZ 99.895 201.202 null]
>>
% 1744 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F78 686 0 R /F192 942 0 R /F190 941 0 R /F243 1285 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1759 0 obj
+% 1760 0 obj
<<
/Type /Page
-/Contents 1760 0 R
-/Resources 1758 0 R
+/Contents 1761 0 R
+/Resources 1759 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 1739 0 R
>>
-% 1761 0 obj
+% 1762 0 obj
<<
-/D [1759 0 R /XYZ 149.705 753.953 null]
+/D [1760 0 R /XYZ 149.705 753.953 null]
>>
% 425 0 obj
<<
-/D [1759 0 R /XYZ 150.705 716.092 null]
+/D [1760 0 R /XYZ 150.705 716.092 null]
>>
-% 1758 0 obj
+% 1759 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1763 0 obj
+% 1764 0 obj
<<
/Type /Page
-/Contents 1764 0 R
-/Resources 1762 0 R
+/Contents 1765 0 R
+/Resources 1763 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 1739 0 R
>>
-% 1765 0 obj
+% 1766 0 obj
<<
-/D [1763 0 R /XYZ 98.895 753.953 null]
+/D [1764 0 R /XYZ 98.895 753.953 null]
>>
% 429 0 obj
<<
-/D [1763 0 R /XYZ 99.895 716.092 null]
+/D [1764 0 R /XYZ 99.895 716.092 null]
>>
-% 1766 0 obj
+% 1767 0 obj
<<
-/D [1763 0 R /XYZ 99.895 170.282 null]
+/D [1764 0 R /XYZ 99.895 170.282 null]
>>
-% 1767 0 obj
+% 1768 0 obj
<<
-/D [1763 0 R /XYZ 99.895 149.368 null]
+/D [1764 0 R /XYZ 99.895 149.368 null]
>>
-% 1762 0 obj
+% 1763 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F192 942 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1769 0 obj
+% 1770 0 obj
<<
/Type /Page
-/Contents 1770 0 R
-/Resources 1768 0 R
+/Contents 1771 0 R
+/Resources 1769 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 1739 0 R
>>
-% 1771 0 obj
+% 1772 0 obj
<<
-/D [1769 0 R /XYZ 149.705 753.953 null]
+/D [1770 0 R /XYZ 149.705 753.953 null]
>>
% 433 0 obj
<<
-/D [1769 0 R /XYZ 150.705 716.092 null]
+/D [1770 0 R /XYZ 150.705 716.092 null]
>>
-% 1772 0 obj
+% 1773 0 obj
<<
-/D [1769 0 R /XYZ 150.705 348.22 null]
+/D [1770 0 R /XYZ 150.705 348.22 null]
>>
-% 1773 0 obj
+% 1774 0 obj
<<
-/D [1769 0 R /XYZ 150.705 313.8 null]
+/D [1770 0 R /XYZ 150.705 313.8 null]
>>
-% 1768 0 obj
+% 1769 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F78 686 0 R /F192 942 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1775 0 obj
+% 1776 0 obj
<<
/Type /Page
-/Contents 1776 0 R
-/Resources 1774 0 R
+/Contents 1777 0 R
+/Resources 1775 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1777 0 obj
+% 1778 0 obj
<<
-/D [1775 0 R /XYZ 98.895 753.953 null]
+/D [1776 0 R /XYZ 98.895 753.953 null]
>>
% 437 0 obj
<<
-/D [1775 0 R /XYZ 99.895 716.092 null]
->>
-% 1778 0 obj
-<<
-/D [1775 0 R /XYZ 99.895 441.869 null]
+/D [1776 0 R /XYZ 99.895 716.092 null]
>>
% 1779 0 obj
<<
-/D [1775 0 R /XYZ 99.895 395.439 null]
+/D [1776 0 R /XYZ 99.895 441.869 null]
>>
% 1780 0 obj
<<
-/D [1775 0 R /XYZ 99.895 363.559 null]
+/D [1776 0 R /XYZ 99.895 395.439 null]
>>
-% 1774 0 obj
+% 1781 0 obj
+<<
+/D [1776 0 R /XYZ 99.895 363.559 null]
+>>
+% 1775 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R /F192 942 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1783 0 obj
+% 1784 0 obj
<<
/Type /Page
-/Contents 1784 0 R
-/Resources 1782 0 R
+/Contents 1785 0 R
+/Resources 1783 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1785 0 obj
+% 1786 0 obj
<<
-/D [1783 0 R /XYZ 149.705 753.953 null]
+/D [1784 0 R /XYZ 149.705 753.953 null]
>>
% 441 0 obj
<<
-/D [1783 0 R /XYZ 150.705 716.092 null]
+/D [1784 0 R /XYZ 150.705 716.092 null]
>>
-% 1782 0 obj
+% 1783 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1787 0 obj
+% 1788 0 obj
<<
/Type /Page
-/Contents 1788 0 R
-/Resources 1786 0 R
+/Contents 1789 0 R
+/Resources 1787 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1789 0 obj
+% 1790 0 obj
<<
-/D [1787 0 R /XYZ 98.895 753.953 null]
+/D [1788 0 R /XYZ 98.895 753.953 null]
>>
% 445 0 obj
<<
-/D [1787 0 R /XYZ 99.895 716.092 null]
+/D [1788 0 R /XYZ 99.895 716.092 null]
>>
-% 1786 0 obj
+% 1787 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1791 0 obj
+% 1792 0 obj
<<
/Type /Page
-/Contents 1792 0 R
-/Resources 1790 0 R
+/Contents 1793 0 R
+/Resources 1791 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1793 0 obj
+% 1794 0 obj
<<
-/D [1791 0 R /XYZ 149.705 753.953 null]
+/D [1792 0 R /XYZ 149.705 753.953 null]
>>
% 449 0 obj
<<
-/D [1791 0 R /XYZ 150.705 716.092 null]
+/D [1792 0 R /XYZ 150.705 716.092 null]
>>
-% 1790 0 obj
+% 1791 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1795 0 obj
+% 1796 0 obj
<<
/Type /Page
-/Contents 1796 0 R
-/Resources 1794 0 R
+/Contents 1797 0 R
+/Resources 1795 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1797 0 obj
+% 1798 0 obj
<<
-/D [1795 0 R /XYZ 98.895 753.953 null]
+/D [1796 0 R /XYZ 98.895 753.953 null]
>>
% 453 0 obj
<<
-/D [1795 0 R /XYZ 99.895 716.092 null]
+/D [1796 0 R /XYZ 99.895 716.092 null]
>>
-% 1794 0 obj
+% 1795 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1799 0 obj
+% 1800 0 obj
<<
/Type /Page
-/Contents 1800 0 R
-/Resources 1798 0 R
+/Contents 1801 0 R
+/Resources 1799 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1781 0 R
+/Parent 1782 0 R
>>
-% 1801 0 obj
+% 1802 0 obj
<<
-/D [1799 0 R /XYZ 149.705 753.953 null]
+/D [1800 0 R /XYZ 149.705 753.953 null]
>>
% 457 0 obj
<<
-/D [1799 0 R /XYZ 150.705 716.092 null]
+/D [1800 0 R /XYZ 150.705 716.092 null]
>>
-% 1798 0 obj
+% 1799 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1803 0 obj
+% 1804 0 obj
<<
/Type /Page
-/Contents 1804 0 R
-/Resources 1802 0 R
+/Contents 1805 0 R
+/Resources 1803 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
+/Parent 1807 0 R
>>
-% 1805 0 obj
+% 1806 0 obj
<<
-/D [1803 0 R /XYZ 98.895 753.953 null]
+/D [1804 0 R /XYZ 98.895 753.953 null]
>>
% 461 0 obj
<<
-/D [1803 0 R /XYZ 99.895 716.092 null]
+/D [1804 0 R /XYZ 99.895 716.092 null]
>>
-% 1802 0 obj
+% 1803 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1808 0 obj
+% 1809 0 obj
<<
/Type /Page
-/Contents 1809 0 R
-/Resources 1807 0 R
+/Contents 1810 0 R
+/Resources 1808 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
->>
-% 1810 0 obj
-<<
-/D [1808 0 R /XYZ 149.705 753.953 null]
+/Parent 1807 0 R
>>
% 1811 0 obj
<<
-/D [1808 0 R /XYZ 150.705 576.399 null]
+/D [1809 0 R /XYZ 149.705 753.953 null]
>>
% 1812 0 obj
<<
-/D [1808 0 R /XYZ 150.705 541.925 null]
+/D [1809 0 R /XYZ 150.705 576.399 null]
>>
% 1813 0 obj
<<
-/D [1808 0 R /XYZ 150.705 451.085 null]
+/D [1809 0 R /XYZ 150.705 541.925 null]
>>
-% 1807 0 obj
+% 1814 0 obj
+<<
+/D [1809 0 R /XYZ 150.705 451.085 null]
+>>
+% 1808 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1816 0 obj
+% 1817 0 obj
<<
/Type /Page
-/Contents 1817 0 R
-/Resources 1815 0 R
+/Contents 1818 0 R
+/Resources 1816 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
+/Parent 1807 0 R
>>
-% 1818 0 obj
+% 1819 0 obj
<<
-/D [1816 0 R /XYZ 98.895 753.953 null]
+/D [1817 0 R /XYZ 98.895 753.953 null]
>>
% 465 0 obj
<<
-/D [1816 0 R /XYZ 99.895 716.092 null]
+/D [1817 0 R /XYZ 99.895 716.092 null]
>>
-% 1815 0 obj
+% 1816 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1820 0 obj
+% 1821 0 obj
<<
/Type /Page
-/Contents 1821 0 R
-/Resources 1819 0 R
+/Contents 1822 0 R
+/Resources 1820 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
->>
-% 1822 0 obj
-<<
-/D [1820 0 R /XYZ 149.705 753.953 null]
+/Parent 1807 0 R
>>
% 1823 0 obj
<<
-/D [1820 0 R /XYZ 150.705 588.355 null]
+/D [1821 0 R /XYZ 149.705 753.953 null]
>>
% 1824 0 obj
<<
-/D [1820 0 R /XYZ 150.705 553.88 null]
+/D [1821 0 R /XYZ 150.705 588.355 null]
>>
% 1825 0 obj
<<
-/D [1820 0 R /XYZ 150.705 463.04 null]
+/D [1821 0 R /XYZ 150.705 553.88 null]
>>
endstream
endobj
-1829 0 obj
+1830 0 obj
<<
/Length 6060
>>
@@ -23506,7 +23569,7 @@ ET
endstream
endobj
-1833 0 obj
+1834 0 obj
<<
/Length 5209
>>
@@ -23629,7 +23692,7 @@ ET
endstream
endobj
-1840 0 obj
+1841 0 obj
<<
/Length 6144
>>
@@ -23689,7 +23752,7 @@ ET
endstream
endobj
-1845 0 obj
+1846 0 obj
<<
/Length 5122
>>
@@ -23812,7 +23875,7 @@ ET
endstream
endobj
-1852 0 obj
+1853 0 obj
<<
/Length 6205
>>
@@ -23872,7 +23935,7 @@ ET
endstream
endobj
-1856 0 obj
+1857 0 obj
<<
/Length 5076
>>
@@ -23993,7 +24056,7 @@ ET
endstream
endobj
-1863 0 obj
+1864 0 obj
<<
/Length 6206
>>
@@ -24053,7 +24116,7 @@ ET
endstream
endobj
-1867 0 obj
+1868 0 obj
<<
/Length 5140
>>
@@ -24176,7 +24239,7 @@ ET
endstream
endobj
-1874 0 obj
+1875 0 obj
<<
/Length 6113
>>
@@ -24236,7 +24299,7 @@ ET
endstream
endobj
-1879 0 obj
+1880 0 obj
<<
/Length 6575
>>
@@ -24372,7 +24435,7 @@ ET
endstream
endobj
-1889 0 obj
+1890 0 obj
<<
/Length 5618
>>
@@ -24429,7 +24492,7 @@ ET
endstream
endobj
-1894 0 obj
+1895 0 obj
<<
/Length 5630
>>
@@ -24485,7 +24548,7 @@ ET
endstream
endobj
-1901 0 obj
+1902 0 obj
<<
/Length 6870
>>
@@ -24509,7 +24572,7 @@ ET
endstream
endobj
-1907 0 obj
+1908 0 obj
<<
/Length 10395
>>
@@ -24960,7 +25023,7 @@ ET
endstream
endobj
-1911 0 obj
+1912 0 obj
<<
/Length 3566
>>
@@ -25071,7 +25134,7 @@ ET
endstream
endobj
-1918 0 obj
+1919 0 obj
<<
/Length 1379
>>
@@ -25114,7 +25177,7 @@ ET
endstream
endobj
-1924 0 obj
+1925 0 obj
<<
/Length 1583
>>
@@ -25171,7 +25234,7 @@ ET
endstream
endobj
-1930 0 obj
+1931 0 obj
<<
/Length 2082
>>
@@ -25242,7 +25305,7 @@ ET
endstream
endobj
-1936 0 obj
+1937 0 obj
<<
/Length 535
>>
@@ -25258,347 +25321,351 @@ ET
endstream
endobj
-1826 0 obj
+1827 0 obj
<<
/Type /ObjStm
/N 100
-/First 975
-/Length 9500
->>
-stream
-1819 0 1828 138 1830 256 469 314 1827 371 1832 522 1834 640 1835 699 1836 758 1837 817
-1831 876 1839 1014 1841 1132 473 1190 1838 1247 1844 1398 1846 1516 1847 1575 1848 1634 1849 1693
-1843 1752 1851 1890 1853 2008 477 2066 1850 2123 1855 2274 1857 2392 1858 2451 1859 2510 1860 2568
-1854 2626 1862 2764 1864 2882 481 2940 1861 2997 1866 3148 1868 3266 1869 3325 1870 3384 1871 3443
-1865 3502 1873 3640 1875 3758 485 3816 1872 3873 1878 4024 1880 4142 1881 4201 1882 4260 1884 4318
-1885 4377 1886 4436 1877 4495 1888 4676 1890 4794 489 4852 1891 4909 1887 4967 1893 5118 1895 5236
-493 5295 1896 5353 1892 5412 1900 5563 1897 5711 1898 5859 1902 6007 497 6065 1899 6122 1906 6217
-1908 6335 1903 6394 1904 6453 1905 6512 1910 6609 1912 6727 501 6785 1913 6842 1914 6900 1909 6958
-1917 7039 1919 7157 505 7216 1920 7274 1921 7332 1916 7391 1923 7472 1925 7590 509 7648 1926 7705
-1927 7763 1922 7821 1929 7902 1931 8020 513 8079 1932 8137 1933 8195 1928 8254 1935 8349 1937 8467
-% 1819 0 obj
+/First 973
+/Length 9498
+>>
+stream
+1826 0 1820 58 1829 196 1831 314 469 372 1828 429 1833 580 1835 698 1836 757 1837 816
+1838 875 1832 934 1840 1072 1842 1190 473 1248 1839 1305 1845 1456 1847 1574 1848 1633 1849 1692
+1850 1751 1844 1810 1852 1948 1854 2066 477 2124 1851 2181 1856 2332 1858 2450 1859 2509 1860 2568
+1861 2626 1855 2684 1863 2822 1865 2940 481 2998 1862 3055 1867 3206 1869 3324 1870 3383 1871 3442
+1872 3501 1866 3560 1874 3698 1876 3816 485 3874 1873 3931 1879 4082 1881 4200 1882 4259 1883 4318
+1885 4376 1886 4435 1887 4494 1878 4553 1889 4734 1891 4852 489 4910 1892 4967 1888 5025 1894 5176
+1896 5294 493 5353 1897 5411 1893 5470 1901 5621 1898 5769 1899 5917 1903 6065 497 6123 1900 6180
+1907 6275 1909 6393 1904 6452 1905 6511 1906 6570 1911 6667 1913 6785 501 6843 1914 6900 1915 6958
+1910 7016 1918 7097 1920 7215 505 7274 1921 7332 1922 7390 1917 7449 1924 7530 1926 7648 509 7706
+1927 7763 1928 7821 1923 7879 1930 7960 1932 8078 513 8137 1933 8195 1934 8253 1929 8312 1936 8407
+% 1826 0 obj
+<<
+/D [1821 0 R /XYZ 150.705 463.04 null]
+>>
+% 1820 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1828 0 obj
+% 1829 0 obj
<<
/Type /Page
-/Contents 1829 0 R
-/Resources 1827 0 R
+/Contents 1830 0 R
+/Resources 1828 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
+/Parent 1807 0 R
>>
-% 1830 0 obj
+% 1831 0 obj
<<
-/D [1828 0 R /XYZ 98.895 753.953 null]
+/D [1829 0 R /XYZ 98.895 753.953 null]
>>
% 469 0 obj
<<
-/D [1828 0 R /XYZ 99.895 716.092 null]
+/D [1829 0 R /XYZ 99.895 716.092 null]
>>
-% 1827 0 obj
+% 1828 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1832 0 obj
+% 1833 0 obj
<<
/Type /Page
-/Contents 1833 0 R
-/Resources 1831 0 R
+/Contents 1834 0 R
+/Resources 1832 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1806 0 R
->>
-% 1834 0 obj
-<<
-/D [1832 0 R /XYZ 149.705 753.953 null]
+/Parent 1807 0 R
>>
% 1835 0 obj
<<
-/D [1832 0 R /XYZ 150.705 576.399 null]
+/D [1833 0 R /XYZ 149.705 753.953 null]
>>
% 1836 0 obj
<<
-/D [1832 0 R /XYZ 150.705 541.925 null]
+/D [1833 0 R /XYZ 150.705 576.399 null]
>>
% 1837 0 obj
<<
-/D [1832 0 R /XYZ 150.705 451.085 null]
+/D [1833 0 R /XYZ 150.705 541.925 null]
>>
-% 1831 0 obj
+% 1838 0 obj
+<<
+/D [1833 0 R /XYZ 150.705 451.085 null]
+>>
+% 1832 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1839 0 obj
+% 1840 0 obj
<<
/Type /Page
-/Contents 1840 0 R
-/Resources 1838 0 R
+/Contents 1841 0 R
+/Resources 1839 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
+/Parent 1843 0 R
>>
-% 1841 0 obj
+% 1842 0 obj
<<
-/D [1839 0 R /XYZ 98.895 753.953 null]
+/D [1840 0 R /XYZ 98.895 753.953 null]
>>
% 473 0 obj
<<
-/D [1839 0 R /XYZ 99.895 716.092 null]
+/D [1840 0 R /XYZ 99.895 716.092 null]
>>
-% 1838 0 obj
+% 1839 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1844 0 obj
+% 1845 0 obj
<<
/Type /Page
-/Contents 1845 0 R
-/Resources 1843 0 R
+/Contents 1846 0 R
+/Resources 1844 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
->>
-% 1846 0 obj
-<<
-/D [1844 0 R /XYZ 149.705 753.953 null]
+/Parent 1843 0 R
>>
% 1847 0 obj
<<
-/D [1844 0 R /XYZ 150.705 576.399 null]
+/D [1845 0 R /XYZ 149.705 753.953 null]
>>
% 1848 0 obj
<<
-/D [1844 0 R /XYZ 150.705 541.925 null]
+/D [1845 0 R /XYZ 150.705 576.399 null]
>>
% 1849 0 obj
<<
-/D [1844 0 R /XYZ 150.705 451.085 null]
+/D [1845 0 R /XYZ 150.705 541.925 null]
>>
-% 1843 0 obj
+% 1850 0 obj
+<<
+/D [1845 0 R /XYZ 150.705 451.085 null]
+>>
+% 1844 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1851 0 obj
+% 1852 0 obj
<<
/Type /Page
-/Contents 1852 0 R
-/Resources 1850 0 R
+/Contents 1853 0 R
+/Resources 1851 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
+/Parent 1843 0 R
>>
-% 1853 0 obj
+% 1854 0 obj
<<
-/D [1851 0 R /XYZ 98.895 753.953 null]
+/D [1852 0 R /XYZ 98.895 753.953 null]
>>
% 477 0 obj
<<
-/D [1851 0 R /XYZ 99.895 716.092 null]
+/D [1852 0 R /XYZ 99.895 716.092 null]
>>
-% 1850 0 obj
+% 1851 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1855 0 obj
+% 1856 0 obj
<<
/Type /Page
-/Contents 1856 0 R
-/Resources 1854 0 R
+/Contents 1857 0 R
+/Resources 1855 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
->>
-% 1857 0 obj
-<<
-/D [1855 0 R /XYZ 149.705 753.953 null]
+/Parent 1843 0 R
>>
% 1858 0 obj
<<
-/D [1855 0 R /XYZ 150.705 588.355 null]
+/D [1856 0 R /XYZ 149.705 753.953 null]
>>
% 1859 0 obj
<<
-/D [1855 0 R /XYZ 150.705 553.88 null]
+/D [1856 0 R /XYZ 150.705 588.355 null]
>>
% 1860 0 obj
<<
-/D [1855 0 R /XYZ 150.705 463.04 null]
+/D [1856 0 R /XYZ 150.705 553.88 null]
>>
-% 1854 0 obj
+% 1861 0 obj
+<<
+/D [1856 0 R /XYZ 150.705 463.04 null]
+>>
+% 1855 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1862 0 obj
+% 1863 0 obj
<<
/Type /Page
-/Contents 1863 0 R
-/Resources 1861 0 R
+/Contents 1864 0 R
+/Resources 1862 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
+/Parent 1843 0 R
>>
-% 1864 0 obj
+% 1865 0 obj
<<
-/D [1862 0 R /XYZ 98.895 753.953 null]
+/D [1863 0 R /XYZ 98.895 753.953 null]
>>
% 481 0 obj
<<
-/D [1862 0 R /XYZ 99.895 716.092 null]
+/D [1863 0 R /XYZ 99.895 716.092 null]
>>
-% 1861 0 obj
+% 1862 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1866 0 obj
+% 1867 0 obj
<<
/Type /Page
-/Contents 1867 0 R
-/Resources 1865 0 R
+/Contents 1868 0 R
+/Resources 1866 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1842 0 R
->>
-% 1868 0 obj
-<<
-/D [1866 0 R /XYZ 149.705 753.953 null]
+/Parent 1843 0 R
>>
% 1869 0 obj
<<
-/D [1866 0 R /XYZ 150.705 576.399 null]
+/D [1867 0 R /XYZ 149.705 753.953 null]
>>
% 1870 0 obj
<<
-/D [1866 0 R /XYZ 150.705 541.925 null]
+/D [1867 0 R /XYZ 150.705 576.399 null]
>>
% 1871 0 obj
<<
-/D [1866 0 R /XYZ 150.705 451.085 null]
+/D [1867 0 R /XYZ 150.705 541.925 null]
>>
-% 1865 0 obj
+% 1872 0 obj
+<<
+/D [1867 0 R /XYZ 150.705 451.085 null]
+>>
+% 1866 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F233 1044 0 R /F78 686 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1873 0 obj
+% 1874 0 obj
<<
/Type /Page
-/Contents 1874 0 R
-/Resources 1872 0 R
+/Contents 1875 0 R
+/Resources 1873 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
+/Parent 1877 0 R
>>
-% 1875 0 obj
+% 1876 0 obj
<<
-/D [1873 0 R /XYZ 98.895 753.953 null]
+/D [1874 0 R /XYZ 98.895 753.953 null]
>>
% 485 0 obj
<<
-/D [1873 0 R /XYZ 99.895 716.092 null]
+/D [1874 0 R /XYZ 99.895 716.092 null]
>>
-% 1872 0 obj
+% 1873 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F190 941 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1878 0 obj
+% 1879 0 obj
<<
/Type /Page
-/Contents 1879 0 R
-/Resources 1877 0 R
+/Contents 1880 0 R
+/Resources 1878 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
->>
-% 1880 0 obj
-<<
-/D [1878 0 R /XYZ 149.705 753.953 null]
+/Parent 1877 0 R
>>
% 1881 0 obj
<<
-/D [1878 0 R /XYZ 150.705 588.355 null]
+/D [1879 0 R /XYZ 149.705 753.953 null]
>>
% 1882 0 obj
<<
-/D [1878 0 R /XYZ 150.705 553.88 null]
+/D [1879 0 R /XYZ 150.705 588.355 null]
>>
-% 1884 0 obj
+% 1883 0 obj
<<
-/D [1878 0 R /XYZ 150.705 465.726 null]
+/D [1879 0 R /XYZ 150.705 553.88 null]
>>
% 1885 0 obj
<<
-/D [1878 0 R /XYZ 150.705 433.845 null]
+/D [1879 0 R /XYZ 150.705 465.726 null]
>>
% 1886 0 obj
<<
-/D [1878 0 R /XYZ 150.705 343.006 null]
+/D [1879 0 R /XYZ 150.705 433.845 null]
>>
-% 1877 0 obj
+% 1887 0 obj
+<<
+/D [1879 0 R /XYZ 150.705 343.006 null]
+>>
+% 1878 0 obj
<<
-/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F78 686 0 R /F192 942 0 R /F17 1883 0 R /F243 1285 0 R /F233 1044 0 R /F279 1814 0 R >>
+/Font << /F84 687 0 R /F75 685 0 R /F145 940 0 R /F78 686 0 R /F192 942 0 R /F17 1884 0 R /F243 1285 0 R /F233 1044 0 R /F279 1815 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1888 0 obj
+% 1889 0 obj
<<
/Type /Page
-/Contents 1889 0 R
-/Resources 1887 0 R
+/Contents 1890 0 R
+/Resources 1888 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
+/Parent 1877 0 R
>>
-% 1890 0 obj
+% 1891 0 obj
<<
-/D [1888 0 R /XYZ 98.895 753.953 null]
+/D [1889 0 R /XYZ 98.895 753.953 null]
>>
% 489 0 obj
<<
-/D [1888 0 R /XYZ 99.895 716.092 null]
+/D [1889 0 R /XYZ 99.895 716.092 null]
>>
-% 1891 0 obj
+% 1892 0 obj
<<
-/D [1888 0 R /XYZ 99.895 222.691 null]
+/D [1889 0 R /XYZ 99.895 222.691 null]
>>
-% 1887 0 obj
+% 1888 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R /F148 1490 0 R /F192 942 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1893 0 obj
+% 1894 0 obj
<<
/Type /Page
-/Contents 1894 0 R
-/Resources 1892 0 R
+/Contents 1895 0 R
+/Resources 1893 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
+/Parent 1877 0 R
>>
-% 1895 0 obj
+% 1896 0 obj
<<
-/D [1893 0 R /XYZ 149.705 753.953 null]
+/D [1894 0 R /XYZ 149.705 753.953 null]
>>
% 493 0 obj
<<
-/D [1893 0 R /XYZ 150.705 716.092 null]
+/D [1894 0 R /XYZ 150.705 716.092 null]
>>
-% 1896 0 obj
+% 1897 0 obj
<<
-/D [1893 0 R /XYZ 150.705 222.691 null]
+/D [1894 0 R /XYZ 150.705 222.691 null]
>>
-% 1892 0 obj
+% 1893 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F148 1490 0 R /F192 942 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1900 0 obj
+% 1901 0 obj
<<
/Type /Page
-/Contents 1901 0 R
-/Resources 1899 0 R
+/Contents 1902 0 R
+/Resources 1900 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
-/Annots [ 1897 0 R 1898 0 R ]
+/Parent 1877 0 R
+/Annots [ 1898 0 R 1899 0 R ]
>>
-% 1897 0 obj
+% 1898 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -25606,7 +25673,7 @@ stream
/Rect [145.364 511.904 152.427 523.964]
/A << /S /GoTo /D (listing.5) >>
>>
-% 1898 0 obj
+% 1899 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -25614,176 +25681,172 @@ stream
/Rect [143.975 356.487 150.849 368.547]
/A << /S /GoTo /D (listing.6) >>
>>
-% 1902 0 obj
+% 1903 0 obj
<<
-/D [1900 0 R /XYZ 98.895 753.953 null]
+/D [1901 0 R /XYZ 98.895 753.953 null]
>>
% 497 0 obj
<<
-/D [1900 0 R /XYZ 99.895 716.092 null]
+/D [1901 0 R /XYZ 99.895 716.092 null]
>>
-% 1899 0 obj
+% 1900 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1906 0 obj
+% 1907 0 obj
<<
/Type /Page
-/Contents 1907 0 R
-/Resources 1905 0 R
+/Contents 1908 0 R
+/Resources 1906 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1876 0 R
->>
-% 1908 0 obj
-<<
-/D [1906 0 R /XYZ 149.705 753.953 null]
+/Parent 1877 0 R
>>
-% 1903 0 obj
+% 1909 0 obj
<<
-/D [1906 0 R /XYZ 150.705 411.235 null]
+/D [1907 0 R /XYZ 149.705 753.953 null]
>>
% 1904 0 obj
<<
-/D [1906 0 R /XYZ 150.705 182.902 null]
+/D [1907 0 R /XYZ 150.705 411.235 null]
>>
% 1905 0 obj
<<
-/Font << /F145 940 0 R /F279 1814 0 R /F84 687 0 R >>
+/D [1907 0 R /XYZ 150.705 182.902 null]
+>>
+% 1906 0 obj
+<<
+/Font << /F145 940 0 R /F279 1815 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1910 0 obj
+% 1911 0 obj
<<
/Type /Page
-/Contents 1911 0 R
-/Resources 1909 0 R
+/Contents 1912 0 R
+/Resources 1910 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
+/Parent 1916 0 R
>>
-% 1912 0 obj
+% 1913 0 obj
<<
-/D [1910 0 R /XYZ 98.895 753.953 null]
+/D [1911 0 R /XYZ 98.895 753.953 null]
>>
% 501 0 obj
<<
-/D [1910 0 R /XYZ 99.895 716.092 null]
+/D [1911 0 R /XYZ 99.895 716.092 null]
>>
-% 1913 0 obj
+% 1914 0 obj
<<
-/D [1910 0 R /XYZ 99.895 690.058 null]
+/D [1911 0 R /XYZ 99.895 690.058 null]
>>
-% 1914 0 obj
+% 1915 0 obj
<<
-/D [1910 0 R /XYZ 99.895 693.143 null]
+/D [1911 0 R /XYZ 99.895 693.143 null]
>>
-% 1909 0 obj
+% 1910 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1917 0 obj
+% 1918 0 obj
<<
/Type /Page
-/Contents 1918 0 R
-/Resources 1916 0 R
+/Contents 1919 0 R
+/Resources 1917 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
+/Parent 1916 0 R
>>
-% 1919 0 obj
+% 1920 0 obj
<<
-/D [1917 0 R /XYZ 149.705 753.953 null]
+/D [1918 0 R /XYZ 149.705 753.953 null]
>>
% 505 0 obj
<<
-/D [1917 0 R /XYZ 150.705 716.092 null]
+/D [1918 0 R /XYZ 150.705 716.092 null]
>>
-% 1920 0 obj
+% 1921 0 obj
<<
-/D [1917 0 R /XYZ 150.705 678.98 null]
+/D [1918 0 R /XYZ 150.705 678.98 null]
>>
-% 1921 0 obj
+% 1922 0 obj
<<
-/D [1917 0 R /XYZ 150.705 679.195 null]
+/D [1918 0 R /XYZ 150.705 679.195 null]
>>
-% 1916 0 obj
+% 1917 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1923 0 obj
+% 1924 0 obj
<<
/Type /Page
-/Contents 1924 0 R
-/Resources 1922 0 R
+/Contents 1925 0 R
+/Resources 1923 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
+/Parent 1916 0 R
>>
-% 1925 0 obj
+% 1926 0 obj
<<
-/D [1923 0 R /XYZ 98.895 753.953 null]
+/D [1924 0 R /XYZ 98.895 753.953 null]
>>
% 509 0 obj
<<
-/D [1923 0 R /XYZ 99.895 716.092 null]
+/D [1924 0 R /XYZ 99.895 716.092 null]
>>
-% 1926 0 obj
+% 1927 0 obj
<<
-/D [1923 0 R /XYZ 99.895 689.963 null]
+/D [1924 0 R /XYZ 99.895 689.963 null]
>>
-% 1927 0 obj
+% 1928 0 obj
<<
-/D [1923 0 R /XYZ 99.895 693.143 null]
+/D [1924 0 R /XYZ 99.895 693.143 null]
>>
-% 1922 0 obj
+% 1923 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1929 0 obj
+% 1930 0 obj
<<
/Type /Page
-/Contents 1930 0 R
-/Resources 1928 0 R
+/Contents 1931 0 R
+/Resources 1929 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
+/Parent 1916 0 R
>>
-% 1931 0 obj
+% 1932 0 obj
<<
-/D [1929 0 R /XYZ 149.705 753.953 null]
+/D [1930 0 R /XYZ 149.705 753.953 null]
>>
% 513 0 obj
<<
-/D [1929 0 R /XYZ 150.705 716.092 null]
+/D [1930 0 R /XYZ 150.705 716.092 null]
>>
-% 1932 0 obj
+% 1933 0 obj
<<
-/D [1929 0 R /XYZ 150.705 678.98 null]
+/D [1930 0 R /XYZ 150.705 678.98 null]
>>
-% 1933 0 obj
+% 1934 0 obj
<<
-/D [1929 0 R /XYZ 150.705 679.195 null]
+/D [1930 0 R /XYZ 150.705 679.195 null]
>>
-% 1928 0 obj
+% 1929 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1935 0 obj
+% 1936 0 obj
<<
/Type /Page
-/Contents 1936 0 R
-/Resources 1934 0 R
+/Contents 1937 0 R
+/Resources 1935 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
->>
-% 1937 0 obj
-<<
-/D [1935 0 R /XYZ 98.895 753.953 null]
+/Parent 1916 0 R
>>
endstream
endobj
-1942 0 obj
+1943 0 obj
<<
/Length 4752
>>
@@ -25867,7 +25930,7 @@ ET
endstream
endobj
-1949 0 obj
+1950 0 obj
<<
/Length 5153
>>
@@ -25955,7 +26018,7 @@ ET
endstream
endobj
-1957 0 obj
+1958 0 obj
<<
/Length 3684
>>
@@ -26045,7 +26108,7 @@ ET
endstream
endobj
-1964 0 obj
+1965 0 obj
<<
/Length 4361
>>
@@ -26142,7 +26205,7 @@ ET
endstream
endobj
-1971 0 obj
+1972 0 obj
<<
/Length 7544
>>
@@ -26329,7 +26392,7 @@ ET
endstream
endobj
-1978 0 obj
+1979 0 obj
<<
/Length 7395
>>
@@ -26506,7 +26569,7 @@ ET
endstream
endobj
-1984 0 obj
+1985 0 obj
<<
/Length 656
>>
@@ -26544,7 +26607,7 @@ ET
endstream
endobj
-1988 0 obj
+1989 0 obj
<<
/Length 1399
>>
@@ -26572,7 +26635,7 @@ ET
endstream
endobj
-1996 0 obj
+1997 0 obj
<<
/Length 5053
>>
@@ -26664,7 +26727,7 @@ ET
endstream
endobj
-2007 0 obj
+2008 0 obj
<<
/Length 4359
>>
@@ -26763,7 +26826,7 @@ ET
endstream
endobj
-2011 0 obj
+2012 0 obj
<<
/Length 13651
>>
@@ -27304,7 +27367,7 @@ ET
endstream
endobj
-2020 0 obj
+2021 0 obj
<<
/Length 7660
>>
@@ -27522,7 +27585,7 @@ ET
endstream
endobj
-2024 0 obj
+2025 0 obj
<<
/Length 1133
>>
@@ -27541,7 +27604,7 @@ ET
endstream
endobj
-2033 0 obj
+2034 0 obj
<<
/Length 6132
>>
@@ -27695,7 +27758,7 @@ ET
endstream
endobj
-2039 0 obj
+2040 0 obj
<<
/Length 3490
>>
@@ -27758,7 +27821,7 @@ ET
endstream
endobj
-2043 0 obj
+2044 0 obj
<<
/Length 973
>>
@@ -27799,43 +27862,47 @@ ET
endstream
endobj
-1938 0 obj
+1939 0 obj
<<
/Type /ObjStm
/N 100
/First 972
-/Length 10928
->>
-stream
-517 0 1934 57 1941 152 1939 291 1943 436 521 495 1944 553 1945 612 1940 671 1948 766
-1946 905 1950 1050 525 1108 1951 1165 1952 1223 1947 1281 1956 1376 1954 1515 1958 1660 529 1719
-1959 1777 1960 1835 1955 1894 1963 1989 1961 2128 1965 2272 533 2330 1966 2387 1967 2444 1962 2502
-1970 2597 1968 2736 1972 2881 537 2940 1973 2998 1974 3057 1969 3116 1977 3239 1975 3378 1979 3520
-541 3578 1980 3635 1981 3693 1976 3751 1983 3874 1985 3992 1982 4051 1987 4134 1989 4252 545 4310
-1986 4367 1995 4462 1991 4619 1992 4766 1993 4914 1997 5061 549 5120 1998 5178 1994 5236 2006 5344
-2000 5510 2001 5657 2002 5804 2003 5952 2008 6099 553 6157 2005 6214 2010 6322 2004 6461 2012 6624
-1999 6683 2009 6743 2019 6853 2014 7019 2015 7164 2016 7311 2017 7458 2021 7605 557 7663 2018 7720
-2023 7815 2025 7933 2022 7992 2032 8087 2026 8262 2027 8407 2028 8550 2029 8697 2030 8841 2034 8990
-561 9048 2031 9105 2038 9200 2036 9339 2040 9484 565 9543 2037 9601 2042 9723 2044 9841 569 9899
-% 517 0 obj
+/Length 10929
+>>
+stream
+1938 0 517 58 1935 115 1942 210 1940 349 1944 494 521 553 1945 611 1946 670 1941 729
+1949 824 1947 963 1951 1108 525 1166 1952 1223 1953 1281 1948 1339 1957 1434 1955 1573 1959 1718
+529 1777 1960 1835 1961 1893 1956 1952 1964 2047 1962 2186 1966 2330 533 2388 1967 2445 1968 2502
+1963 2560 1971 2655 1969 2794 1973 2939 537 2998 1974 3056 1975 3115 1970 3174 1978 3297 1976 3436
+1980 3578 541 3636 1981 3693 1982 3751 1977 3809 1984 3932 1986 4050 1983 4109 1988 4192 1990 4310
+545 4368 1987 4425 1996 4520 1992 4677 1993 4824 1994 4972 1998 5119 549 5178 1999 5236 1995 5294
+2007 5402 2001 5568 2002 5715 2003 5862 2004 6010 2009 6157 553 6215 2006 6272 2011 6380 2005 6519
+2013 6682 2000 6741 2010 6801 2020 6911 2015 7077 2016 7222 2017 7369 2018 7516 2022 7663 557 7721
+2019 7778 2024 7873 2026 7991 2023 8050 2033 8145 2027 8320 2028 8465 2029 8608 2030 8755 2031 8899
+2035 9048 561 9106 2032 9163 2039 9258 2037 9397 2041 9542 565 9601 2038 9659 2043 9781 2045 9899
+% 1938 0 obj
<<
-/D [1935 0 R /XYZ 99.895 716.092 null]
+/D [1936 0 R /XYZ 98.895 753.953 null]
>>
-% 1934 0 obj
+% 517 0 obj
+<<
+/D [1936 0 R /XYZ 99.895 716.092 null]
+>>
+% 1935 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1941 0 obj
+% 1942 0 obj
<<
/Type /Page
-/Contents 1942 0 R
-/Resources 1940 0 R
+/Contents 1943 0 R
+/Resources 1941 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1915 0 R
-/Annots [ 1939 0 R ]
+/Parent 1916 0 R
+/Annots [ 1940 0 R ]
>>
-% 1939 0 obj
+% 1940 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -27843,37 +27910,37 @@ stream
/Rect [342.753 438.278 420.271 450.338]
/A << /S /GoTo /D (spdata) >>
>>
-% 1943 0 obj
+% 1944 0 obj
<<
-/D [1941 0 R /XYZ 149.705 753.953 null]
+/D [1942 0 R /XYZ 149.705 753.953 null]
>>
% 521 0 obj
<<
-/D [1941 0 R /XYZ 150.705 716.092 null]
+/D [1942 0 R /XYZ 150.705 716.092 null]
>>
-% 1944 0 obj
+% 1945 0 obj
<<
-/D [1941 0 R /XYZ 150.705 676.015 null]
+/D [1942 0 R /XYZ 150.705 676.015 null]
>>
-% 1945 0 obj
+% 1946 0 obj
<<
-/D [1941 0 R /XYZ 150.705 679.195 null]
+/D [1942 0 R /XYZ 150.705 679.195 null]
>>
-% 1940 0 obj
+% 1941 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1948 0 obj
+% 1949 0 obj
<<
/Type /Page
-/Contents 1949 0 R
-/Resources 1947 0 R
+/Contents 1950 0 R
+/Resources 1948 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
-/Annots [ 1946 0 R ]
+/Parent 1954 0 R
+/Annots [ 1947 0 R ]
>>
-% 1946 0 obj
+% 1947 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -27881,37 +27948,37 @@ stream
/Rect [291.943 571.778 369.462 583.837]
/A << /S /GoTo /D (spdata) >>
>>
-% 1950 0 obj
+% 1951 0 obj
<<
-/D [1948 0 R /XYZ 98.895 753.953 null]
+/D [1949 0 R /XYZ 98.895 753.953 null]
>>
% 525 0 obj
<<
-/D [1948 0 R /XYZ 99.895 716.092 null]
+/D [1949 0 R /XYZ 99.895 716.092 null]
>>
-% 1951 0 obj
+% 1952 0 obj
<<
-/D [1948 0 R /XYZ 99.895 676.015 null]
+/D [1949 0 R /XYZ 99.895 676.015 null]
>>
-% 1952 0 obj
+% 1953 0 obj
<<
-/D [1948 0 R /XYZ 99.895 679.195 null]
+/D [1949 0 R /XYZ 99.895 679.195 null]
>>
-% 1947 0 obj
+% 1948 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1956 0 obj
+% 1957 0 obj
<<
/Type /Page
-/Contents 1957 0 R
-/Resources 1955 0 R
+/Contents 1958 0 R
+/Resources 1956 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
-/Annots [ 1954 0 R ]
+/Parent 1954 0 R
+/Annots [ 1955 0 R ]
>>
-% 1954 0 obj
+% 1955 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -27919,37 +27986,37 @@ stream
/Rect [342.753 438.278 420.271 450.338]
/A << /S /GoTo /D (spdata) >>
>>
-% 1958 0 obj
+% 1959 0 obj
<<
-/D [1956 0 R /XYZ 149.705 753.953 null]
+/D [1957 0 R /XYZ 149.705 753.953 null]
>>
% 529 0 obj
<<
-/D [1956 0 R /XYZ 150.705 716.092 null]
+/D [1957 0 R /XYZ 150.705 716.092 null]
>>
-% 1959 0 obj
+% 1960 0 obj
<<
-/D [1956 0 R /XYZ 150.705 678.98 null]
+/D [1957 0 R /XYZ 150.705 678.98 null]
>>
-% 1960 0 obj
+% 1961 0 obj
<<
-/D [1956 0 R /XYZ 150.705 679.195 null]
+/D [1957 0 R /XYZ 150.705 679.195 null]
>>
-% 1955 0 obj
+% 1956 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1963 0 obj
+% 1964 0 obj
<<
/Type /Page
-/Contents 1964 0 R
-/Resources 1962 0 R
+/Contents 1965 0 R
+/Resources 1963 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
-/Annots [ 1961 0 R ]
+/Parent 1954 0 R
+/Annots [ 1962 0 R ]
>>
-% 1961 0 obj
+% 1962 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -27957,37 +28024,37 @@ stream
/Rect [301.961 426.323 378.015 438.383]
/A << /S /GoTo /D (vdata) >>
>>
-% 1965 0 obj
+% 1966 0 obj
<<
-/D [1963 0 R /XYZ 98.895 753.953 null]
+/D [1964 0 R /XYZ 98.895 753.953 null]
>>
% 533 0 obj
<<
-/D [1963 0 R /XYZ 99.895 716.092 null]
+/D [1964 0 R /XYZ 99.895 716.092 null]
>>
-% 1966 0 obj
+% 1967 0 obj
<<
-/D [1963 0 R /XYZ 99.895 678.98 null]
+/D [1964 0 R /XYZ 99.895 678.98 null]
>>
-% 1967 0 obj
+% 1968 0 obj
<<
-/D [1963 0 R /XYZ 99.895 679.195 null]
+/D [1964 0 R /XYZ 99.895 679.195 null]
>>
-% 1962 0 obj
+% 1963 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1970 0 obj
+% 1971 0 obj
<<
/Type /Page
-/Contents 1971 0 R
-/Resources 1969 0 R
+/Contents 1972 0 R
+/Resources 1970 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
-/Annots [ 1968 0 R ]
+/Parent 1954 0 R
+/Annots [ 1969 0 R ]
>>
-% 1968 0 obj
+% 1969 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -27995,37 +28062,37 @@ stream
/Rect [342.753 574.778 420.271 586.838]
/A << /S /GoTo /D (spdata) >>
>>
-% 1972 0 obj
+% 1973 0 obj
<<
-/D [1970 0 R /XYZ 149.705 753.953 null]
+/D [1971 0 R /XYZ 149.705 753.953 null]
>>
% 537 0 obj
<<
-/D [1970 0 R /XYZ 150.705 716.092 null]
+/D [1971 0 R /XYZ 150.705 716.092 null]
>>
-% 1973 0 obj
+% 1974 0 obj
<<
-/D [1970 0 R /XYZ 150.705 679.441 null]
+/D [1971 0 R /XYZ 150.705 679.441 null]
>>
-% 1974 0 obj
+% 1975 0 obj
<<
-/D [1970 0 R /XYZ 150.705 679.657 null]
+/D [1971 0 R /XYZ 150.705 679.657 null]
>>
-% 1969 0 obj
+% 1970 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R /F78 686 0 R /F233 1044 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1977 0 obj
+% 1978 0 obj
<<
/Type /Page
-/Contents 1978 0 R
-/Resources 1976 0 R
+/Contents 1979 0 R
+/Resources 1977 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
-/Annots [ 1975 0 R ]
+/Parent 1954 0 R
+/Annots [ 1976 0 R ]
>>
-% 1975 0 obj
+% 1976 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28033,75 +28100,75 @@ stream
/Rect [396.215 574.59 472.269 586.65]
/A << /S /GoTo /D (vdata) >>
>>
-% 1979 0 obj
+% 1980 0 obj
<<
-/D [1977 0 R /XYZ 98.895 753.953 null]
+/D [1978 0 R /XYZ 98.895 753.953 null]
>>
% 541 0 obj
<<
-/D [1977 0 R /XYZ 99.895 716.092 null]
+/D [1978 0 R /XYZ 99.895 716.092 null]
>>
-% 1980 0 obj
+% 1981 0 obj
<<
-/D [1977 0 R /XYZ 99.895 679.413 null]
+/D [1978 0 R /XYZ 99.895 679.413 null]
>>
-% 1981 0 obj
+% 1982 0 obj
<<
-/D [1977 0 R /XYZ 99.895 679.628 null]
+/D [1978 0 R /XYZ 99.895 679.628 null]
>>
-% 1976 0 obj
+% 1977 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R /F78 686 0 R /F233 1044 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1983 0 obj
+% 1984 0 obj
<<
/Type /Page
-/Contents 1984 0 R
-/Resources 1982 0 R
+/Contents 1985 0 R
+/Resources 1983 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1953 0 R
+/Parent 1954 0 R
>>
-% 1985 0 obj
+% 1986 0 obj
<<
-/D [1983 0 R /XYZ 149.705 753.953 null]
+/D [1984 0 R /XYZ 149.705 753.953 null]
>>
-% 1982 0 obj
+% 1983 0 obj
<<
/Font << /F233 1044 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1987 0 obj
+% 1988 0 obj
<<
/Type /Page
-/Contents 1988 0 R
-/Resources 1986 0 R
+/Contents 1989 0 R
+/Resources 1987 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
+/Parent 1991 0 R
>>
-% 1989 0 obj
+% 1990 0 obj
<<
-/D [1987 0 R /XYZ 98.895 753.953 null]
+/D [1988 0 R /XYZ 98.895 753.953 null]
>>
% 545 0 obj
<<
-/D [1987 0 R /XYZ 99.895 716.092 null]
+/D [1988 0 R /XYZ 99.895 716.092 null]
>>
-% 1986 0 obj
+% 1987 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 1995 0 obj
+% 1996 0 obj
<<
/Type /Page
-/Contents 1996 0 R
-/Resources 1994 0 R
+/Contents 1997 0 R
+/Resources 1995 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
-/Annots [ 1991 0 R 1992 0 R 1993 0 R ]
+/Parent 1991 0 R
+/Annots [ 1992 0 R 1993 0 R 1994 0 R ]
>>
-% 1991 0 obj
+% 1992 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28109,7 +28176,7 @@ stream
/Rect [371.126 442.264 443.414 454.323]
/A << /S /GoTo /D (precdata) >>
>>
-% 1992 0 obj
+% 1993 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28117,7 +28184,7 @@ stream
/Rect [222.066 352.6 228.343 366.303]
/A << /S /GoTo /D (Hfootnote.4) >>
>>
-% 1993 0 obj
+% 1994 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28125,33 +28192,33 @@ stream
/Rect [221.319 235.698 233.275 245.108]
/A << /S /GoTo /D (table.21) >>
>>
-% 1997 0 obj
+% 1998 0 obj
<<
-/D [1995 0 R /XYZ 149.705 753.953 null]
+/D [1996 0 R /XYZ 149.705 753.953 null]
>>
% 549 0 obj
<<
-/D [1995 0 R /XYZ 150.705 716.092 null]
+/D [1996 0 R /XYZ 150.705 716.092 null]
>>
-% 1998 0 obj
+% 1999 0 obj
<<
-/D [1995 0 R /XYZ 165.051 129.79 null]
+/D [1996 0 R /XYZ 165.051 129.79 null]
>>
-% 1994 0 obj
+% 1995 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2006 0 obj
+% 2007 0 obj
<<
/Type /Page
-/Contents 2007 0 R
-/Resources 2005 0 R
+/Contents 2008 0 R
+/Resources 2006 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
-/Annots [ 2000 0 R 2001 0 R 2002 0 R 2003 0 R ]
+/Parent 1991 0 R
+/Annots [ 2001 0 R 2002 0 R 2003 0 R 2004 0 R ]
>>
-% 2000 0 obj
+% 2001 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28159,7 +28226,7 @@ stream
/Rect [283.359 567.422 295.314 580.259]
/A << /S /GoTo /D (table.21) >>
>>
-% 2001 0 obj
+% 2002 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28167,7 +28234,7 @@ stream
/Rect [366.137 520.379 378.292 532.438]
/A << /S /GoTo /D (table.21) >>
>>
-% 2002 0 obj
+% 2003 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28175,7 +28242,7 @@ stream
/Rect [379.319 483.736 386.292 496.573]
/A << /S /GoTo /D (section.8) >>
>>
-% 2003 0 obj
+% 2004 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28183,29 +28250,29 @@ stream
/Rect [136.757 451.412 148.712 460.822]
/A << /S /GoTo /D (table.21) >>
>>
-% 2008 0 obj
+% 2009 0 obj
<<
-/D [2006 0 R /XYZ 98.895 753.953 null]
+/D [2007 0 R /XYZ 98.895 753.953 null]
>>
% 553 0 obj
<<
-/D [2006 0 R /XYZ 99.895 716.092 null]
+/D [2007 0 R /XYZ 99.895 716.092 null]
>>
-% 2005 0 obj
+% 2006 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2010 0 obj
+% 2011 0 obj
<<
/Type /Page
-/Contents 2011 0 R
-/Resources 2009 0 R
+/Contents 2012 0 R
+/Resources 2010 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
-/Annots [ 2004 0 R ]
+/Parent 1991 0 R
+/Annots [ 2005 0 R ]
>>
-% 2004 0 obj
+% 2005 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28213,29 +28280,29 @@ stream
/Rect [404.253 212.933 412.423 220.405]
/A << /S /GoTo /D (cite.BERTACCINIFILIPPONE) >>
>>
-% 2012 0 obj
+% 2013 0 obj
<<
-/D [2010 0 R /XYZ 149.705 753.953 null]
+/D [2011 0 R /XYZ 149.705 753.953 null]
>>
-% 1999 0 obj
+% 2000 0 obj
<<
-/D [2010 0 R /XYZ -3900.052 719.08 null]
+/D [2011 0 R /XYZ -3900.052 719.08 null]
>>
-% 2009 0 obj
+% 2010 0 obj
<<
/Font << /F233 1044 0 R /F84 687 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2019 0 obj
+% 2020 0 obj
<<
/Type /Page
-/Contents 2020 0 R
-/Resources 2018 0 R
+/Contents 2021 0 R
+/Resources 2019 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
-/Annots [ 2014 0 R 2015 0 R 2016 0 R 2017 0 R ]
+/Parent 1991 0 R
+/Annots [ 2015 0 R 2016 0 R 2017 0 R 2018 0 R ]
>>
-% 2014 0 obj
+% 2015 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28243,7 +28310,7 @@ stream
/Rect [314.678 576.377 392.197 588.437]
/A << /S /GoTo /D (spdata) >>
>>
-% 2015 0 obj
+% 2016 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28251,7 +28318,7 @@ stream
/Rect [395.856 505.741 468.144 517.801]
/A << /S /GoTo /D (precdata) >>
>>
-% 2016 0 obj
+% 2017 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28259,7 +28326,7 @@ stream
/Rect [371.454 435.105 438.512 447.165]
/A << /S /GoTo /D (descdata) >>
>>
-% 2017 0 obj
+% 2018 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28267,46 +28334,46 @@ stream
/Rect [317.418 128.475 389.706 140.535]
/A << /S /GoTo /D (precdata) >>
>>
-% 2021 0 obj
+% 2022 0 obj
<<
-/D [2019 0 R /XYZ 98.895 753.953 null]
+/D [2020 0 R /XYZ 98.895 753.953 null]
>>
% 557 0 obj
<<
-/D [2019 0 R /XYZ 99.895 716.092 null]
+/D [2020 0 R /XYZ 99.895 716.092 null]
>>
-% 2018 0 obj
+% 2019 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2023 0 obj
+% 2024 0 obj
<<
/Type /Page
-/Contents 2024 0 R
-/Resources 2022 0 R
+/Contents 2025 0 R
+/Resources 2023 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 1990 0 R
+/Parent 1991 0 R
>>
-% 2025 0 obj
+% 2026 0 obj
<<
-/D [2023 0 R /XYZ 149.705 753.953 null]
+/D [2024 0 R /XYZ 149.705 753.953 null]
>>
-% 2022 0 obj
+% 2023 0 obj
<<
/Font << /F75 685 0 R /F84 687 0 R /F145 940 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2032 0 obj
+% 2033 0 obj
<<
/Type /Page
-/Contents 2033 0 R
-/Resources 2031 0 R
+/Contents 2034 0 R
+/Resources 2032 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 2035 0 R
-/Annots [ 2026 0 R 2027 0 R 2028 0 R 2029 0 R 2030 0 R ]
+/Parent 2036 0 R
+/Annots [ 2027 0 R 2028 0 R 2029 0 R 2030 0 R 2031 0 R ]
>>
-% 2026 0 obj
+% 2027 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28314,7 +28381,7 @@ stream
/Rect [320.317 573.77 392.605 585.83]
/A << /S /GoTo /D (precdata) >>
>>
-% 2027 0 obj
+% 2028 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28322,7 +28389,7 @@ stream
/Rect [342.493 517.98 418.548 530.039]
/A << /S /GoTo /D (vdata) >>
>>
-% 2028 0 obj
+% 2029 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28330,7 +28397,7 @@ stream
/Rect [324.013 462.189 391.071 474.248]
/A << /S /GoTo /D (descdata) >>
>>
-% 2029 0 obj
+% 2030 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28338,7 +28405,7 @@ stream
/Rect [342.493 272.899 418.548 284.958]
/A << /S /GoTo /D (vdata) >>
>>
-% 2030 0 obj
+% 2031 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28346,29 +28413,29 @@ stream
/Rect [431.552 183.235 443.387 196.238]
/A << /S /GoTo /D (section.11) >>
>>
-% 2034 0 obj
+% 2035 0 obj
<<
-/D [2032 0 R /XYZ 98.895 753.953 null]
+/D [2033 0 R /XYZ 98.895 753.953 null]
>>
% 561 0 obj
<<
-/D [2032 0 R /XYZ 99.895 716.092 null]
+/D [2033 0 R /XYZ 99.895 716.092 null]
>>
-% 2031 0 obj
+% 2032 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2038 0 obj
+% 2039 0 obj
<<
/Type /Page
-/Contents 2039 0 R
-/Resources 2037 0 R
+/Contents 2040 0 R
+/Resources 2038 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 2035 0 R
-/Annots [ 2036 0 R ]
+/Parent 2036 0 R
+/Annots [ 2037 0 R ]
>>
-% 2036 0 obj
+% 2037 0 obj
<<
/Type /Annot
/Subtype /Link
@@ -28376,39 +28443,35 @@ stream
/Rect [371.126 573.77 443.414 585.83]
/A << /S /GoTo /D (precdata) >>
>>
-% 2040 0 obj
+% 2041 0 obj
<<
-/D [2038 0 R /XYZ 149.705 753.953 null]
+/D [2039 0 R /XYZ 149.705 753.953 null]
>>
% 565 0 obj
<<
-/D [2038 0 R /XYZ 150.705 716.092 null]
+/D [2039 0 R /XYZ 150.705 716.092 null]
>>
-% 2037 0 obj
+% 2038 0 obj
<<
/Font << /F75 685 0 R /F145 940 0 R /F84 687 0 R /F78 686 0 R /F190 941 0 R >>
/ProcSet [ /PDF /Text ]
>>
-% 2042 0 obj
+% 2043 0 obj
<<
/Type /Page
-/Contents 2043 0 R
-/Resources 2041 0 R
+/Contents 2044 0 R
+/Resources 2042 0 R
/MediaBox [0 0 595.276 841.89]
-/Parent 2035 0 R
+/Parent 2036 0 R
>>
-% 2044 0 obj
+% 2045 0 obj
<<
-/D [2042 0 R /XYZ 98.895 753.953 null]
->>
-% 569 0 obj
-<<
-/D [2042 0 R /XYZ 99.895 716.092 null]
+/D [2043 0 R /XYZ 98.895 753.953 null]
>>
endstream
endobj
-2050 0 obj
+2051 0 obj
<<
/Length 2715
>>
@@ -28485,7 +28548,7 @@ ET
endstream
endobj
-2058 0 obj
+2059 0 obj
<<
/Length 6107
>>
@@ -28609,7 +28672,7 @@ ET
endstream
endobj
-2065 0 obj
+2066 0 obj
<<
/Length 3194
>>
@@ -28697,7 +28760,7 @@ ET
endstream
endobj
-2069 0 obj
+2070 0 obj
<<
/Length 607
>>
@@ -28713,7 +28776,7 @@ ET
endstream
endobj
-2077 0 obj
+2078 0 obj
<<
/Length 8466
>>
@@ -28863,7 +28926,7 @@ ET
endstream
endobj
-2088 0 obj
+2089 0 obj
<<
/Length 7173
>>
@@ -29003,7 +29066,7 @@ ET
endstream
endobj
-2093 0 obj
+2094 0 obj
<<
/Length 4580
>>
@@ -29070,7 +29133,7 @@ ET
endstream
endobj
-2101 0 obj
+2102 0 obj
<<
/Length 8759
>>
@@ -29222,7 +29285,7 @@ ET
endstream
endobj
-2110 0 obj
+2111 0 obj
<<
/Length 6806
>>
@@ -29347,7 +29410,7 @@ ET
endstream
endobj
-2114 0 obj
+2115 0 obj
<<
/Length 1090
>>
@@ -29370,7 +29433,7 @@ ET
endstream
endobj
-2125 0 obj
+2126 0 obj
<<
/Length 8172
>>
@@ -29604,7 +29667,7 @@ ET
endstream
endobj
-2139 0 obj
+2140 0 obj
<<
/Length 9201
>>
@@ -29861,7 +29924,7 @@ ET
endstream
endobj
-2148 0 obj
+2149 0 obj
<<
/Length 4837
>>
@@ -29930,21 +29993,21 @@ ET
endstream
endobj
-2132 0 obj
+2133 0 obj
<<
/Type /XObject
/Subtype /Form
/FormType 1
/PTEX.FileName (./figures/mat.pdf)
/PTEX.PageNumber 1
-/PTEX.InfoDict 2153 0 R
+/PTEX.InfoDict 2154 0 R
/BBox [0 0 438 395]
/Resources <<
/ProcSet [ /PDF /ImageC ]
/ExtGState <<
-/R7 2154 0 R
+/R7 2155 0 R
>>/XObject <<
-/R8 2155 0 R
+/R8 2156 0 R
>>>>
/Length 3551
/Filter /FlateDecode
@@ -29973,7 +30036,7 @@ r
JXxC[ S^zݰ.F$5`2.L 0
#Z(DSj*'f;?buRr* ݁"@ ai(o^ /o*o
endstream
endobj
-2155 0 obj
+2156 0 obj
<<
/Subtype /Image
/ColorSpace /DeviceGray
@@ -29992,7 +30055,7 @@ stream
& @
endstream
endobj
-2159 0 obj
+2160 0 obj
<<
/Length 7547
>>
@@ -30142,66 +30205,43 @@ ET
endstream
endobj
-2134 0 obj
-<<
-/Type /XObject
-/Subtype /Form
-/FormType 1
-/PTEX.FileName (./figures/ell.pdf)
-/PTEX.PageNumber 1
-/PTEX.InfoDict 2170 0 R
-/BBox [0 0 447 205]
-/Resources <<
-/ProcSet [ /PDF /ImageC /Text ]
-/ExtGState <<
-/R7 2171 0 R
->>/XObject <<
-/R8 2172 0 R
->>/Font << /R9 2173 0 R/R11 2174 0 R>>
->>
-/Length 2281
-/Filter /FlateDecode
->>
-stream
-xYˊ%WU~,okOý6=^! )EM3Pv)rZN8~s|9Z&vM
-|-7;}Ζ)d_Dg| ]]`l:H4d(f)֛d)L"bZ^3-~Ʀ%Luyf \HxPiGZb_NIIKP@``kM8ؖ8N6t%3L1V싋-5I@Ņh\ɶ!%/ 5QRŅUBk*# Hۑ?Hf[cǑ-"քNPYC&i]3D_(ԮQve3jJVggTen@in;Yi@fsa3g]FgsTAVӓ+npN>.P;~R@c,S cߗ3ίޓKHNKR1ҭ}|_i,K@4ytҔ[a> 3-0'I$WPo%R*NڧK@XʊF(9(jScA-\pCc&2k@=WZDD NDbENzUzV`T}Y@3Za_YQ W5e^Mrj"K-wQU0FEX>5(!N
bEZzԐ¨QŅVc1,2fɊb2/\4zK/2ome.N;z狩W04LeIG,N{PeZD>R2Ⴥ$].,-,-.uru]RNUJbϒ%ƒe](^E/""YE(:{/ȪUdr63hhk rѢ[i ҵ8 i ٮZZ9bE+#%E-. V\mhEdբ7Ryl6ky`d(T_>Ӕe+]@zcCl_&_64xn_'e:9F=Q/x؏_
ݾPyNhǞ(~J7+n$֭Lxxф8CySׄ]f;XkL'/,kV@VwFjUQ/B8Q !=ջL|LO/sbj
p4b&zpLf.($}6OsXȅ_\@
*Hj`˂[^3[oM
q<խ ؟! [~ Uμ HX`ZD
.y Y*~T D%4ϴ Icf QcYHC*cJRҀ