Day-II/ 40777 0 0 0 11777562507 5132 5Day-II/._01-Inheritance100777 0 0 10000 11777552440 10043 0Mac OS X  2ATTR;&&com.apple.quarantine0001;48b6e5c7;Safari;|com.apple.SafariThis resource fork intentionally left blank Day-II/01-Inheritance/ 40777 0 0 0 11777562505 7577 5Day-II/01-Inheritance/._async_io.f90100777 0 0 10000 11777552442 12246 0Mac OS X  2ATTR;]]%com.apple.metadata:kMDItemWhereFromsbplist00_.http://users.erols.com/dnagle/pub/async_io.f03 ;This resource fork intentionally left blank Day-II/01-Inheritance/._iterator.f90100777 0 0 10000 11777555264 12300 0Mac OS X  2TEXTATTR;lcom.apple.TextEncoding]%com.apple.metadata:kMDItemWhereFromsUTF-8;134217984bplist00_.http://users.erols.com/dnagle/pub/iterator.f03 ;This resource fork intentionally left blank Day-II/01-Inheritance/._iterator.mk100777 0 0 10000 11777555076 12312 0Mac OS X  2TEXTATTR;com.apple.TextEncodingUTF-8;134217984This resource fork intentionally left blank Day-II/01-Inheritance/async_io.f90100777 0 0 24507 11055562726 12045 0! bof ! ********************************************************************** ! Fortran 2003 program async_io ! ********************************************************************** ! Source Control Strings ! $Id: async_io.f03 1.2 2005/03/24 17:26:19Z Dan Release $ ! ********************************************************************** ! Copyright 2005 Purple Sage Computing Solutions, Inc. ! All Rights Reserved ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later version. ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! General Public License for more details. ! You should have received a copy of the GNU General Public ! License along with this program; if not, write to the Free ! Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! To report bugs, suggest enhancements, etc. to the Authors, ! Contact: ! Purple Sage Computing Solutions, Inc. ! send email to dnagle@erols.com ! or fax to 703 425-0983 (USA) ! or mail to 10483 Malone Ct. ! Fairfax, VA 22032 USA ! ********************************************************************** ! async_io describe the program ! ********************************************************************** ! async_io uses ! stdandard_types- describes the processor ! async_io includes ! ! async_io reads ! async_io writes ! async_io constants ! async_io types ! async_io data ! async_io library ! ********************************************************************** ! async_io ! ********************************************************************** program async_io ! ********************************************************************** ! async_io uses modules use f03_standard_definitions, only: is_status_error, is_status_info ! ********************************************************************** ! processor description use processor_dependencies ! ********************************************************************** ! turn off implicit typing implicit none ! explicit declarations ! ********************************************************************** ! async_io RCS strings ! ********************************************************************** ! program source filename supplied by RCS character( len= *), parameter :: async_io_rcs_id = & '$Id: async_io.f03 1.2 2005/03/24 17:26:19Z Dan Release $' ! ********************************************************************** ! async_io constants ! ********************************************************************** integer, parameter :: input = 41, output = 42 ! logical units integer, parameter :: nmax = 2000 ! a large size ! ********************************************************************** ! async_io types ! ********************************************************************** ! no types ! ********************************************************************** ! async_io data ! ********************************************************************** integer :: io_status ! check iostat real, dimension( nmax, nmax), asynchronous, target :: input_buffer_1 real, dimension( nmax, nmax), asynchronous, target :: input_buffer_2 real, dimension( nmax, nmax), asynchronous, target :: output_buffer_1 real, dimension( nmax, nmax), asynchronous, target :: output_buffer_2 real, dimension( :, :), asynchronous, pointer :: input_calc_ptr, input_io_ptr real, dimension( :, :), asynchronous, pointer :: output_calc_ptr, output_io_ptr ! ********************************************************************** ! async_io text ! ********************************************************************** continue ! async_io ! this program uses double buffering of input and output ! to demonstrate asynchronous input/output techniques ! there must be one read to start the input process ! before the main loop ! there must be one write to finish the output process ! after the main loop ! the main strategy is: ! read input ! process input to make output ! write output ! ********************************************************************** ! open the input file and check for success open( unit= input, file= 'async.in', form= 'UNFORMATTED', status= 'OLD', asynchronous= 'YES', iostat= io_status) check_open_in_stat: if( is_status_error( io_status) )then stop "can't open async.in" endif check_open_in_stat ! open the output file and check for success open( unit= output, file= 'async.out', form= 'UNFORMATTED', status= 'REPLACE', asynchronous= 'YES', iostat= io_status) check_open_out_stat: if( is_status_error( io_status) )then stop "can't open async.out" endif check_open_out_stat ! ---------------------------------------------------------------------- ! assign pointers input_calc_ptr => input_buffer_1 ! first time process input_buffer_1 input_io_ptr => input_buffer_2 ! first time read input_buffer_2 output_calc_ptr => output_buffer_1 ! first time compute output_buffer_1 output_io_ptr => output_buffer_1 ! output_buffer_1 will be ready first ! read the first block read( unit= input, iostat= io_status) input_calc_ptr ! initial read check_read_stat: if( is_status_error( io_status) )then stop "can't read async.in" endif check_read_stat ! start to read the next block read( unit= input, asynchronous= 'YES', iostat= io_status) input_io_ptr check_readprime_stat: if( is_status_error( io_status) )then stop "can't asynch read async.in" endif check_readprime_stat ! calculate the first output buffer call big_calculation( input_calc_ptr, output_calc_ptr) ! ---------------------------------------------------------------------- ! do forever pipeline: do ! exit upon end of file ! write next block write( unit= output, asynchronous= 'YES', iostat= io_status) output_io_ptr check_writea_stat: if( is_status_error( io_status) )then stop "can't asynch write async.out" endif check_writea_stat ! ensure previousd read has completed wait( unit= input, iostat= io_status) check_readwait_stat: if( is_status_error( io_status) )then stop "can't wait async.in" elseif( is_status_info( io_status) )then check_readwait_stat ! wait might return eof exit pipeline endif check_readwait_stat ! swap input pointers swap_in_ptr: if( associated( input_calc_ptr, input_buffer_1) )then input_calc_ptr => input_buffer_2 input_io_ptr => input_buffer_1 else swap_in_ptr input_calc_ptr => input_buffer_1 input_io_ptr => input_buffer_2 endif swap_in_ptr ! read next block read( unit= input, asynchronous= 'YES', iostat= io_status) input_io_ptr check_reada_stat: if( is_status_error( io_status) )then stop "can't asynch read async.in" elseif( is_status_info( io_status) )then check_reada_stat ! read might return eof immediately exit pipeline endif check_reada_stat ! calculate call big_calculation( input_calc_ptr, output_calc_ptr) ! ensure previousd write has completed wait( unit= output, iostat= io_status) check_writewait_stat: if( is_status_error( io_status) )then stop "can't wait async.out" endif check_writewait_stat ! swap output pointers swap_out_ptr: if( associated( output_calc_ptr, output_buffer_1) )then output_calc_ptr => output_buffer_2 output_io_ptr => output_buffer_1 else swap_out_ptr output_calc_ptr => output_buffer_1 output_io_ptr => output_buffer_2 endif swap_out_ptr ! end do forever enddo pipeline ! exit upon end of file ! ---------------------------------------------------------------------- ! write last block write( unit= input, iostat= io_status) output_io_ptr check_write_stat: if( is_status_error( io_status) )then stop "can't write async.out" endif check_write_stat ! ---------------------------------------------------------------------- ! close the input file and check for success close( unit= input, status= 'KEEP', iostat= io_status) check_close_in_stat: if( is_status_error( io_status) )then stop "can't close async.in" endif check_close_in_stat ! close the output file and check for success close( unit= output, status= 'KEEP', iostat= io_status) check_close_out_stat: if( is_status_error( io_status) )then stop "can't close async.out" endif check_close_out_stat ! ---------------------------------------------------------------------- ! and done stop 'async_io' ! async_io ! ********************************************************************** ! async_io library ! ********************************************************************** contains ! async_io ! ********************************************************************** ! big_calculation( in_array, out_array) is the supposed work subroutine big_calculation( in_array, out_array) real, dimension( :, :), intent( in) :: in_array real, dimension( :, :), intent( out) :: out_array continue out_array = in_array ! or something return end subroutine big_calculation ! async_io ! $Id: async_io.f03 1.2 2005/03/24 17:26:19Z Dan Release $ ! ********************************************************************** end program async_io ! eof Day-II/01-Inheritance/field_iterator.mod100777 0 0 77657 11777555276 13451 0GFORTRAN module version '6' created from iterator.f90 on Thu Jul 12 08:10:07 2012 MD5:8961ed596a6360606adc1784328bc50b -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) () () () () ((2 ('field_1d_t' 'field_iterator') ('field_2d_t' 'field_iterator') ( 'field_3d_t' 'field_iterator'))) (3 '__def_init_field_iterator_Field_1d_t' 'field_iterator' '__def_init_field_iterator_Field_1d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET) (DERIVED 4 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 5 '__def_init_field_iterator_Field_2d_t' 'field_iterator' '__def_init_field_iterator_Field_2d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET) (DERIVED 6 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 7 '__def_init_field_iterator_Field_3d_t' 'field_iterator' '__def_init_field_iterator_Field_3d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET) (DERIVED 8 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 9 '__vtab_field_iterator_Field_1d_t' 'field_iterator' '__vtab_field_iterator_Field_1d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) (DERIVED 10 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 11 '__vtab_field_iterator_Field_2d_t' 'field_iterator' '__vtab_field_iterator_Field_2d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) (DERIVED 12 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 13 '__vtab_field_iterator_Field_3d_t' 'field_iterator' '__vtab_field_iterator_Field_3d_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) (DERIVED 14 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 15 '__vtab_iterator_Iterator_t' 'iterator' '__vtab_iterator_Iterator_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) (DERIVED 16 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 10 '__vtype_field_iterator_Field_1d_t' 'field_iterator' '__vtype_field_iterator_Field_1d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((17 '_hash' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (18 '_size' ( INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (19 '_extends' (DERIVED 16 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (20 '_def_init' (DERIVED 4 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (21 '_copy' (UNKNOWN 0 0 0 UNKNOWN ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 PROC_POINTER) PRIVATE 22 (23 24) ( UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (25 'converged_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 26 (27) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (28 'setup_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE ALWAYS_EXPLICIT PROCEDURE PROC_POINTER) PRIVATE 29 (30 31 32) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (33 'step_iterator' ( UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 34 (35) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (36 'write_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 37 (38) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (39 'runaway_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 40 (41) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0))) UNKNOWN-ACCESS () () 0 0 0) 12 '__vtype_field_iterator_Field_2d_t' 'field_iterator' '__vtype_field_iterator_Field_2d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((42 '_hash' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (43 '_size' ( INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (44 '_extends' (DERIVED 16 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (45 '_def_init' (DERIVED 6 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (46 '_copy' (UNKNOWN 0 0 0 UNKNOWN ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 PROC_POINTER) PRIVATE 47 (48 49) ( UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (50 'converged_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 51 (52) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (53 'setup_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE ALWAYS_EXPLICIT PROCEDURE PROC_POINTER) PRIVATE 54 (55 56 57) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (58 'step_iterator' ( UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 59 (60) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (61 'write_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 62 (63) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (64 'runaway_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 65 (66) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0))) UNKNOWN-ACCESS () () 0 0 0) 14 '__vtype_field_iterator_Field_3d_t' 'field_iterator' '__vtype_field_iterator_Field_3d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((67 '_hash' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (68 '_size' ( INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (69 '_extends' (DERIVED 16 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (70 '_def_init' (DERIVED 8 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (71 '_copy' (UNKNOWN 0 0 0 UNKNOWN ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 PROC_POINTER) PRIVATE 72 (73 74) ( UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (75 'converged_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 76 (77) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (78 'setup_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE ALWAYS_EXPLICIT PROCEDURE PROC_POINTER) PRIVATE 79 (80 81 82) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (83 'step_iterator' ( UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 84 (85) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (86 'write_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 87 (88) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0)) (89 'runaway_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 90 (91) (PUBLIC OVERRIDABLE PASS SPECIFIC PPC 'object' 0))) UNKNOWN-ACCESS () () 0 0 0) 16 '__vtype_iterator_Iterator_t' 'iterator' '__vtype_iterator_Iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) ( UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((92 '_hash' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (93 '_size' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (94 '_extends' (DERIVED 16 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (95 '_def_init' (DERIVED 2 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (96 '_copy' (UNKNOWN 0 0 0 UNKNOWN ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUTINE PROC_POINTER) PRIVATE 0 () (UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (97 'converged_iterator' (LOGICAL 4 0 0 LOGICAL ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 98 (99) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (100 'setup_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () ( PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE ALWAYS_EXPLICIT PROCEDURE PROC_POINTER) PRIVATE 101 (102 103 104) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (105 'step_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 106 (107) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (108 'write_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 109 (110) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (111 'runaway_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 112 (113) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0))) UNKNOWN-ACCESS () () 0 0 0) 4 'field_1d_t' 'field_iterator' 'field_1d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 1 ALLOC_COMP PRIVATE_COMP) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((114 'iterator_t' (DERIVED 2 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (STRUCTURE (DERIVED 2 0 0 DERIVED ()) 0 (((CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '0') ()) ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000') ()) ((CONSTANT (REAL 8 0 0 REAL ()) 0 '0.6df37f675ef6ec@-8') ())) ())) (115 'values' (REAL 8 0 0 REAL ()) (2 0 DEFERRED () () () ()) ( UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ALLOCATABLE DIMENSION) UNKNOWN-ACCESS ()) (116 'update' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2'))) PRIVATE (() (('converged' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'converged_iterator'))) ('converged_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 117)) ('runaway' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('runaway_iterator'))) ('runaway_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 118)) ('setup' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('setup_iterator'))) ( 'setup_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 119)) ('step' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('step_iterator'))) ('step_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 120)) ('write_field' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'write_iterator'))) ('write_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 121))) () ()) () 0 0 80658521) 6 'field_2d_t' 'field_iterator' 'field_2d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 1 ALLOC_COMP PRIVATE_COMP) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((122 'iterator_t' (DERIVED 2 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (STRUCTURE (DERIVED 2 0 0 DERIVED ()) 0 (((CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '0') ()) ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000') ()) ((CONSTANT (REAL 8 0 0 REAL ()) 0 '0.6df37f675ef6ec@-8') ())) ())) (123 'values' (REAL 8 0 0 REAL ()) (3 0 DEFERRED () () () () () ()) (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ALLOCATABLE DIMENSION) UNKNOWN-ACCESS ()) (124 'update' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2'))) PRIVATE (() (('converged' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'converged_iterator'))) ('converged_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 125)) ('runaway' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('runaway_iterator'))) ('runaway_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 126)) ('setup' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('setup_iterator'))) ( 'setup_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 127)) ('step' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('step_iterator'))) ('step_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 128)) ('write_field' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'write_iterator'))) ('write_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 129))) () ()) () 0 0 66278424) 8 'field_3d_t' 'field_iterator' 'field_3d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 1 ALLOC_COMP PRIVATE_COMP) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((130 'iterator_t' (DERIVED 2 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (STRUCTURE (DERIVED 2 0 0 DERIVED ()) 0 (((CONSTANT ( INTEGER 4 0 0 INTEGER ()) 0 '0') ()) ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000') ()) ((CONSTANT (REAL 8 0 0 REAL ()) 0 '0.6df37f675ef6ec@-8') ())) ())) (131 'values' (REAL 8 0 0 REAL ()) (4 0 DEFERRED () () () () () () () ()) (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ALLOCATABLE DIMENSION) UNKNOWN-ACCESS ()) (132 'update' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2'))) PRIVATE (() (('converged' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'converged_iterator'))) ('converged_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 133)) ('runaway' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('runaway_iterator'))) ('runaway_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 134)) ('setup' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('setup_iterator'))) ( 'setup_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 135)) ('step' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ('step_iterator'))) ('step_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 136)) ('write_field' (PUBLIC OVERRIDABLE PASS GENERIC NO_PPC '' 0 ( 'write_iterator'))) ('write_iterator' (PUBLIC OVERRIDABLE PASS SPECIFIC NO_PPC 'object' 1 137))) () ()) () 0 0 46865623) 138 'field_iterator_rcs_id' 'field_iterator' 'field_iterator_rcs_id' 1 ( (PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( CHARACTER 1 0 0 CHARACTER ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '52'))) 0 0 () (CONSTANT (CHARACTER 1 0 0 CHARACTER (())) 0 52 '$Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $') () 0 () () () 0 0) 117 'converged_field_1d' 'field_iterator' 'converged_field_1d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 139 0 (140) () 141 () () () 0 0) 118 'runaway_field_1d' 'field_iterator' 'runaway_field_1d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 142 0 (143) () 144 () () () 0 0) 121 'write_field_1d' 'field_iterator' 'write_field_1d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 145 0 (146) () 0 () () () 0 0) 127 'setup_field_2d' 'field_iterator' 'setup_field_2d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 147 0 (148 149 150) () 0 () () () 0 0) 128 'step_field_2d' 'field_iterator' 'step_field_2d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE IMPLICIT_PURE) ( UNKNOWN 0 0 0 UNKNOWN ()) 151 0 (152) () 0 () () () 0 0) 125 'converged_field_2d' 'field_iterator' 'converged_field_2d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 153 0 (154) () 155 () () () 0 0) 126 'runaway_field_2d' 'field_iterator' 'runaway_field_2d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 156 0 (157) () 158 () () () 0 0) 129 'write_field_2d' 'field_iterator' 'write_field_2d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 159 0 (160) () 0 () () () 0 0) 2 'iterator_t' 'iterator' 'iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ABSTRACT) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((161 'iteration_count' (INTEGER 4 0 0 INTEGER ()) () ( UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0')) (162 'maximum_count' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000')) (163 'tolerance' (REAL 8 0 0 REAL ()) () ( UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (REAL 8 0 0 REAL ()) 0 '0.6df37f675ef6ec@-8'))) PUBLIC (() (('converged_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 164)) ('runaway_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 165)) ('setup_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 166)) ('step_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 167)) ('write_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 168))) () ()) () 0 0 51313748) 120 'step_field_1d' 'field_iterator' 'step_field_1d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE IMPLICIT_PURE) ( UNKNOWN 0 0 0 UNKNOWN ()) 169 0 (170) () 0 () () () 0 0) 119 'setup_field_1d' 'field_iterator' 'setup_field_1d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 171 0 (172 173 174) () 0 () () () 0 0) 167 'step_signature' 'iterator' 'step_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT) ( UNKNOWN 0 0 0 UNKNOWN ()) 175 0 (176) () 0 () () () 0 0) 168 'write_signature' 'iterator' 'write_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT) ( UNKNOWN 0 0 0 UNKNOWN ()) 177 0 (178) () 0 () () () 0 0) 99 'object' '' 'object' 98 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 103 'maximum_steps' '' 'maximum_steps' 101 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 102 'object' '' 'object' 101 ((VARIABLE OUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 104 'set_tolerance' '' 'set_tolerance' 101 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 107 'object' '' 'object' 106 ((VARIABLE INOUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 110 'object' '' 'object' 109 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 113 'object' '' 'object' 112 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 165 'runaway_signature' 'iterator' 'runaway_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 FUNCTION ABSTRACT) (LOGICAL 4 0 0 LOGICAL ()) 180 0 (181) () 182 () () () 0 0) 164 'converged_signature' 'iterator' 'converged_signature' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 FUNCTION ABSTRACT) (LOGICAL 4 0 0 LOGICAL ()) 183 0 (184) () 185 () () () 0 0) 135 'setup_field_3d' 'field_iterator' 'setup_field_3d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 186 0 (187 188 189) () 0 () () () 0 0) 136 'step_field_3d' 'field_iterator' 'step_field_3d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE IMPLICIT_PURE) ( UNKNOWN 0 0 0 UNKNOWN ()) 190 0 (191) () 0 () () () 0 0) 133 'converged_field_3d' 'field_iterator' 'converged_field_3d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 192 0 (193) () 194 () () () 0 0) 134 'runaway_field_3d' 'field_iterator' 'runaway_field_3d' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 FUNCTION IMPLICIT_PURE) (LOGICAL 4 0 0 LOGICAL ()) 195 0 (196) () 197 () () () 0 0) 137 'write_field_3d' 'field_iterator' 'write_field_3d' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC DECL UNKNOWN 0 0 SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 198 0 (199) () 0 () () () 0 0) 172 'object' '' 'object' 171 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 173 'maximum_steps' '' 'maximum_steps' 171 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 174 'set_tolerance' '' 'set_tolerance' 171 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 200 '__class_field_iterator_Field_1d_t' 'field_iterator' '__class_field_iterator_Field_1d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 2 IS_CLASS) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((201 '_data' (DERIVED 4 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ()) ( 202 '_vptr' (DERIVED 10 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ())) UNKNOWN-ACCESS ( () () () ()) () 0 0 0) 170 'object' '' 'object' 169 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 146 'object' '' 'object' 145 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 140 'object' '' 'object' 139 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 141 'converged_example' '' 'converged_example' 139 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 143 'object' '' 'object' 142 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 144 'runaway_example' '' 'runaway_example' 142 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 148 'object' '' 'object' 147 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 149 'maximum_steps' '' 'maximum_steps' 147 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 150 'set_tolerance' '' 'set_tolerance' 147 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 203 '__class_field_iterator_Field_2d_t' 'field_iterator' '__class_field_iterator_Field_2d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 2 IS_CLASS) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((204 '_data' (DERIVED 6 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ()) ( 205 '_vptr' (DERIVED 12 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ())) UNKNOWN-ACCESS ( () () () ()) () 0 0 0) 152 'object' '' 'object' 151 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 160 'object' '' 'object' 159 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 154 'object' '' 'object' 153 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 155 'converged_example' '' 'converged_example' 153 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 157 'object' '' 'object' 156 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 158 'runaway_example' '' 'runaway_example' 156 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 187 'object' '' 'object' 186 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 188 'maximum_steps' '' 'maximum_steps' 186 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 189 'set_tolerance' '' 'set_tolerance' 186 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 206 '__class_field_iterator_Field_3d_t' 'field_iterator' '__class_field_iterator_Field_3d_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 2 IS_CLASS) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((207 '_data' (DERIVED 8 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ()) ( 208 '_vptr' (DERIVED 14 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ())) UNKNOWN-ACCESS ( () () () ()) () 0 0 0) 191 'object' '' 'object' 190 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 199 'object' '' 'object' 198 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 193 'object' '' 'object' 192 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 194 'converged_example' '' 'converged_example' 192 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 196 'object' '' 'object' 195 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 197 'runaway_example' '' 'runaway_example' 195 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 23 'src' '' 'src' 22 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 4 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 24 'dst' '' 'dst' 22 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 4 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 27 'object' '' 'object' 26 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 30 'object' '' 'object' 29 ((VARIABLE OUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 31 'maximum_steps' '' 'maximum_steps' 29 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 32 'set_tolerance' '' 'set_tolerance' 29 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 35 'object' '' 'object' 34 ((VARIABLE INOUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 38 'object' '' 'object' 37 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 41 'object' '' 'object' 40 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 200 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 48 'src' '' 'src' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 6 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 49 'dst' '' 'dst' 47 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 6 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 52 'object' '' 'object' 51 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 55 'object' '' 'object' 54 ((VARIABLE OUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 56 'maximum_steps' '' 'maximum_steps' 54 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 57 'set_tolerance' '' 'set_tolerance' 54 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 60 'object' '' 'object' 59 ((VARIABLE INOUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 63 'object' '' 'object' 62 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 66 'object' '' 'object' 65 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 203 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 73 'src' '' 'src' 72 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 8 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 74 'dst' '' 'dst' 72 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (DERIVED 8 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 77 'object' '' 'object' 76 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 80 'object' '' 'object' 79 ((VARIABLE OUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 81 'maximum_steps' '' 'maximum_steps' 79 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 82 'set_tolerance' '' 'set_tolerance' 79 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 85 'object' '' 'object' 84 ((VARIABLE INOUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 88 'object' '' 'object' 87 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 91 'object' '' 'object' 90 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 206 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 176 'object' '' 'object' 175 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 178 'object' '' 'object' 177 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 179 '__class_iterator_Iterator_t' 'iterator' '__class_iterator_Iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 1 ABSTRACT IS_CLASS) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((209 '_data' (DERIVED 2 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER ABSTRACT) PRIVATE ()) (210 '_vptr' (DERIVED 16 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ())) UNKNOWN-ACCESS (() () () ()) () 0 0 0) 166 'setup_signature' 'iterator' 'setup_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 211 0 (212 213 214) () 0 () () () 0 0) 212 'object' '' 'object' 211 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 214 'set_tolerance' '' 'set_tolerance' 211 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 213 'maximum_steps' '' 'maximum_steps' 211 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 185 'converged' '' 'converged' 183 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 181 'object' '' 'object' 180 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 182 'converged' '' 'converged' 180 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 184 'object' '' 'object' 183 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 179 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) ) ('__def_init_field_iterator_Field_1d_t' 0 3 '__def_init_field_iterator_Field_2d_t' 0 5 '__def_init_field_iterator_Field_3d_t' 0 7 '__vtab_field_iterator_Field_1d_t' 0 9 '__vtab_field_iterator_Field_2d_t' 0 11 '__vtab_field_iterator_Field_3d_t' 0 13 '__vtab_iterator_Iterator_t' 0 15 '__vtype_field_iterator_Field_1d_t' 0 10 '__vtype_field_iterator_Field_2d_t' 0 12 '__vtype_field_iterator_Field_3d_t' 0 14 '__vtype_iterator_Iterator_t' 0 16 'field_1d_t' 0 4 'field_2d_t' 0 6 'field_3d_t' 0 8 'field_iterator_rcs_id' 0 138) Day-II/01-Inheritance/iterator100777 0 0 242000 11777555302 11506 0 H__PAGEZERO(__TEXT  __text__TEXT]__stubs__TEXTVrV__stub_helper__TEXT__cstring__TEXTb__const__TEXT__eh_frame__TEXT`(__DATA  __dyld__DATA 8 __nl_symbol_ptr__DATA8 8 __la_symbol_ptr__DATAH H __data__DATA  __common__DATAp$ __bss2__DATA$XH__LINKEDIT0 0"000(0@2H5R; P#>h:( /usr/lib/dyld[MD6Ϋpґ$ * H/usr/local/gfortran/lib/libgfortran.3.dylib 8/usr/lib/libSystem.B.dylib H/usr/local/gfortran/lib/libgcc_s.1.dylib H/usr/local/gfortran/lib/libquadmath.0.dylib&50jHHH}HuHHHH9uH}ASLAS%%UHHH}tH5+H=d\HEH@HtHHEH@HuHQH5XH=yHEH@HHEH@UHH H}tH5PH=IHEHHEH@9EEUHAWAVAUATSHHH}qtH5HH=IHEHHHP(H@ HH)HHHHH‰EHEHHHP@H@8HH)HHHHH‰EHEHHHPXH@PHH)HHHHH‰E8 EAHEHH@IHEHH@HEẼLcЋEȃLc؋EăHcHEHH@IHEHH@HEẼHcEȃLcȋEăHcIHEHH@0H!Љt9HEHHP8HEHH@0IHH54H=]IHEHH@8H!Љt9HEHHP8HEHH@0IHH5H=%IHEHH@0L9!Љt7HEHHP0HEHH@8IHLH5wH=IHEHH@8L9!Љt7HEHHP0HEHH@8IHLH5H=kCIBHILIIHEHH@HH!Љt9HEHHPPHEHH@HIHH5'H=IHEHH@PH!Љt9HEHHPPHEHH@HIHH5H=pIHEHH@HL9!Љt7HEHHPHHEHH@PIHLH5jH=;IHEHH@PL9!Љt7HEHHPHHEHH@PIHLH5 H=ICHILIHHEHH@`H!Љt9HEHHPhHEHH@`IHH5H=kCHHEHH@hH!Љt9HEHHPhHEHH@`IHH5H= HHEHH@`H9!Љt7HEHHP`HEHH@hIHHH55H=HHEHH@hH9!Љt7HEHHP`HEHH@hIHHH5H=Q)HCHHHIHHEHH@0H!Љt9HEHHP8HEHH@0IHH5H=HHEHH@8H!Љt9HEHHP8HEHH@0IHH5-H=VVHHEHH@0H9!Љt7HEHHP0HEHH@8IHHH5H=HHEHH@8H9!Љt7HEHHP0HEHH@8IHHH5sH=HFHHHL9t.HFHHHLHH5H=QQIHEHH@HH!Љt9HEHHPPHEHH@HIHH5HH=IHEHH@PH!Љt9HEHHPPHEHH@HIHH5H=IHEHH@HL9!Љt7HEHHPHHEHH@PIHLH5H=44IHEHH@PL9!Љt7HEHHPHHEHH@PIHLH5.H=IAHHHL9t.IAHHHLHH5H=HHEHH@`H!Љt9HEHHPhHEHH@`IHH5H=,,HHEHH@hH!Љt9HEHHPhHEHH@`IHH5{H=HHEHH@`H9!Љt7HEHHP`HEHH@hIHHH5H=ooHHEHH@hH9!Љt7HEHHP`HEHH@hIHHH5H=HGHHHH9t+HGHHHHH5H=HEHH@xHtHHHHH@HH;!ЉtAHHHHPHHHHH@PIHHH5#H=\̹HHHHH@PH;!ЉtAHHHHPHHHHH@PIHHH5H=ZHHHHHL9t5HHHHHLHH5xH=HHHHH@`H!Љt?HHHHPhHHHH@`IHH5CH=$蔸HHHHH@hH!Љt?HHHHPhHHHH@`IHH5ֻH='HHHHH@`H;!ЉtAHHHHP`HHHH@hIHHH5dH=E起HHHHH@hH;!ЉtAHHHHP`HHHH@hIHHH5H=ӾCHHHHHH;xt9HHHHHHxHH5H=rHHHHH@0H!Љt?HHHHP8HHHH@0IHH5LH==uHHHHH@8H!Љt?HHHHP8HHHH@0IHH5߸H=мHHHHH@0H;!ЉtAHHHHP0HHHH@8IHHH5mH=^薵HHHHH@8H;!ЉtAHHHHP0HHHH@8IHHH5H=$HHHHHH9t2HHHHHHH5H=δHHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=)aHHHHH@PH!Љt?HHHHPPHHHH@HIHH5KH=HHHHH@HH;!ЉtAHHHHPHHHHH@PIHHH5ٶH=J肳HHHHH@PH;!ЉtAHHHHPHHHHH@PIHHH5gH=عHHHHHL9t5HHHHHLHH5.H=跲HHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=JHHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=ݱHHHHH@`H;!ЉtAHHHHP`HHHH@hIHHH5H=3kHHHHH@hH;!ЉtAHHHHP`HHHH@hIHHH5H=HHHHHH;xt9HHHHHHxHH5WH=`蘰EHc؋ELcELcELcEHHpEHHhEHH`H0HHXH(HHPL IHDž`HDžhHDžpHXHxHXHHDHXHHUHEHPHMHPHHHPHHHUHEL}IGHIGHHDƒ!‰ȃ!Ѕt HHHDH蛯Hu H=ݶ$HPHDžXHHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH59H=bHHHH@pHH8HHHLHHHH@xH9t@HHHHHHHH@xIHHH5H=ѴHHHHH9t@HHHHHHHH@xIHHH5ZH=s胭HHHH@pHHHH@LHHHH@xH9t@HHHHHHHH@xIHHH5ٴH=HHHHH9t@HHHHHHHH@xIHHH5{H=褬HHHH@pHHHH8LHHHH@xH9t@HHHHHHHH@xIHHH5H=c#HHHHH9t@HHHHHHHH@xIHHH5H=ūHHHH@pHHHH0HpHHHH@xH9t@HHHHHHHH@xIHHH5H=@HHHHH9t@HHHHHHHH@xIHHH5H=JHHHH@pHHHH(HhHHHH@xH9t@HHHHHHHH@xIHHH54H=]HHHHH9t@HHHHHHHH@xIHHH5ֱH=HHHH@pHHHH H`HHHH@xH9t@HHHHHHHH@xIHHH5QH=BzHHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHHL9HEHHHHVHHHH@XHHHHHHVHHHH@XHH@HHHVHHHH@XHH8HHHVHHHH@XHH0HHHVHHHH@XHH(HHHVHHHH@XHH HHH;PHEHLIHQHHHH@@HLIHQHHHH@@HLIHQHHHH@@HHHHHQHHHH@@HLIHQHHHH@@HLIHQHHHH@@HLIH;X LPJ<*HBLHHH@ HBLHHHXHBHHHHH XHBLHHH XHBLHHH XHBLHHH Xf(YAHHHL9HEILHJHHHH@XHLIùH;PbHEHNHqHHHH@@HJH;X(HpL HPJ<H4HJ4HHHSHPHtHcHHHHHH\H[A\A]A^A_]UHSHH}Hu/tH5H=;裤HEH;EDHUHEHƸHHHEHEH@HHEHHEH@xHH)HHPHEH@pHHHHHDHfHu H=HUHBH4HEHPHEH@HHHH* HEH@ H[]UHAWAVAUATSHXHHHtH5%H=^^HHH@HtHHH@HHHH@HH@@HcHH@HHHHHHDHt#H~HHHPHteHfWf.tHHHfHn f.f. ЅteHH@HHDžDžDžHHHMHHH.HMHHHHMHHHHHšHHH@ HHH@0HHUHcHP8HHH@(EHHcHt-HHH?HHtHHHH@HHHUHcHPPHHHp@EHHcHt-HHH?HH9tD8HHHH@`HHUHcHPhHHHHXEHHcHt-HHH?HH9tAHHHHHBxHHHǂHHHBpH?H9҅tF H<IHI9҅tF HHH)HH)ËEЋE ‹E ЅtHHD…҅tH=)HHHRHHHDH0Hu H=0蹞HHHHPHHHXHOHDžDžDžHH}HMHHH蘞HMHHH}HMHHHbHMHHHGHMHHH,HMHHHHHҝHHH@HHHL@HHHPHHHHpPHHHx`HHLHhHHH@xHH LH9DHH HIHH9D!ىɅu!YHH5H=ɦHHHHPHHH@HIHH5H=远H9DHH HIPH9D!ىɅt:HHHHPHHH@HIHH5H=S[H9DHH HIHH9D!ىɅt=HHHPHHHH@PIHHH5KH=H9DHH HIPH9D!ىɅt=HHHPHHHH@PIHHH5H=荛HH)HHL9DHH HI`H9D!ىɅt=HHHPhHHH@`IHHH5ȞH=L9DHH HIhH9D!ىɅt=HHHPhHHH@`IHHH5aH=貚L9DHH HI`L9D!ىɅt=HHHP`HHH@hIHLH5H=CKL9DHH HIhL9D!ىɅt=HHHP`HHH@hIHLH5H=ܣLH)HHL9DHH HIxH9D!ىɅt@HHHHHHRxIHHH5tH=emL9DHH HH9D!ىɅt@HHHHHHRxIHHH5H=L9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5H=薘L9DHH HL9D!ىɅt@HHHPxHHHIHLH50H=!)LH)HHLeHH HI0HɅt?HHHP8HHH@0IHH5H=轗HH HI8HɅt?HHHP8HHH@0IHH5H=[cMpHH Li@HL9fHHH@pHN<0IM9BHHH@XILHHH9IMLN$HIHHHH@HHHL@HHHpHHHHxPHHLH`HHLPhHHH@xHHLH9HHHRHH9!ʉ҅t=HHHPPHHH@HIHHH5_H=xH9HHHRPH9!ʉ҅t=HHHPPHHH@HIHHH5H=裕H9HHHRHH9!ʉ҅t=HHHPHHHH@PIHHH5H=>H9HHHRPH9!ʉ҅t=HHHPHHHH@PIHHH50H=IٔHH)HHM9HHHR`L9!ʉ҅t=HHHPhHHH@`IHLH5H=מgM9HHHRhL9!ʉ҅t=HHHPhHHH@`IHLH5H=rM9HHHR`L9!ʉ҅t=HHHP`HHH@hIHLH5LH= 蝓M9HHHRhL9!ʉ҅t=HHHP`HHH@hIHLH5H=8LL)HHL9HHHRxH9!ʉ҅t@HHHHHHRxIHHH5ʗH=3ÒL9HHHH9!ʉ҅t@HHHHHHRxIHHH5_H=ȜXL9HHHRxL9!ʉ҅t@HHHPxHHHIHLH5H=`L9HHHL9!ʉ҅t@HHHPxHHHIHLH5H=腑LH)HHLeUHcHH HI0H9Ʌt:HHHH8HHH@0IHH5H=HH HI8H9Ʌt:HHHH8HHH@0IHH5cH=4ĐM4HHLj@HL9fHHH@pHN<0LL9BHHH@XHLHHH9IMLN$HHHHHH@IHHL@HHH@0HHHR8HH Hq`HH HyhHH LQxHH LH9HH HI0H9!ىɅt=HHHJ8HHHR0IHHH5@H=QiH9HH HI8H9!ىɅt=HHHJ8HHHR0IHHH5ۑH=H9HH HI0H9!ىɅt:HHHH0HHH@8IHH5yH=袎H9HH HI8H9!ىɅt:HHHH0HHH@8IHH5H=(@HH)HHH9HH HI`H9!ىɅt=HHHPhHHH@`IHHH5}H=΍H9HH HIhH9!ىɅt=HHHPhHHH@`IHHH5H=QiH9HH HI`H9!ىɅt=HHHP`HHH@hIHHH5H=H9HH HIhH9!ىɅt=HHHP`HHH@hIHHH5NH=蟌HH)HHM9HH HIxL9!ىɅt@HHHHHH@xIHLH51H=*M9HH HL9!ىɅt@HHHHHH@xIHLH5ƐH=迋M9HH HIxL9!ىɅt@HHHPxHHHIHLH5^H=?WM9HH HL9!ىɅt@HHHPxHHHIHLH5H=ԕLL)HHH]HH HIHHɅt?HHHPPHHH@HIHH5H=h耊HH HIPHɅt?HHHPPHHH@HIHH5=H=&HH HI@N4MM9VHH HIpIN<1II92HH HIXIN,9HH9N$)KHIIHHH@HHHL@HHH@0HHHR8HH Hq`HH HyhHH LQxHH LH9DHH HI0H9D!ىɅt=HHHJ8HHHR0IHHH5H=9وH9DHH HI8H9D!ىɅt=HHHJ8HHHR0IHHH5IH=ғrH9DHH HI0H9D!ىɅt:HHHH0HHH@8IHH5H=nH9DHH HI8H9D!ىɅt:HHHH0HHH@8IHH5H= 誇HH)HHH9DHH HI`H9D!ىɅt=HHHPhHHH@`IHHH5H=6H9DHH HIhH9D!ىɅt=HHHPhHHH@`IHHH5~H=/φH9DHH HI`H9D!ىɅt=HHHP`HHH@hIHHH5H=ȑhH9DHH HIhH9D!ىɅt=HHHP`HHH@hIHHH5H=aHH)HHM9DHH HIxL9D!ىɅt@HHHHHH@xIHLH5H=芅M9DHH HL9D!ىɅt@HHHHHH@xIHLH5$H=}M9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5H=賄M9DHH HL9D!ىɅt@HHHPxHHHIHLH5MH=FLL)HHLeMHcIHH HIHL9Ʌt=HHHPPHHH@HIHLH5cH=4ԃHH HIPL9Ʌt=HHHPPHHH@HIHLH5 H=܎|HH HI@IN4MM9VHH HIpIN<1II92HH HIXIN,9HH9N)N$HIIHHH@IHHL@HHH@0HHHR8HH HqHHH HyPHH LQxHH LH9HH HI0H9!ىɅt=HHHJ8HHHR0IHHH5H=-H9HH HI8H9!ىɅt=HHHJ8HHHR0IHHH5H=ȁH9HH HI0H9!ىɅt:HHHH0HHH@8IHH5=H=>fH9HH HI8H9!ىɅt:HHHH0HHH@8IHH5ۃH=܌HH)HHH9HH HIHH9!ىɅt=HHHPPHHH@HIHHH5H=j蒀H9HH HIPH9!ىɅt=HHHPPHHH@HIHHH5H=-H9HH HIHH9!ىɅt=HHHPHHHH@PIHHH5H=H9HH HIPH9!ىɅt=HHHPHHHH@PIHHH5H=;cHH)HHM9HH HIxL9!ىɅt@HHHHHH@xIHLH5H=Ɗ~M9HH HL9!ىɅt@HHHHHH@xIHLH5H=[~M9HH HIxL9!ىɅt@HHHPxHHHIHLH5"H=~M9HH HL9!ىɅt@HHHPxHHHIHLH5H=}LL)HHH]HH HI`HɅt?HHHPhHHH@`IHH5KH=D}HH HIhHɅt?HHHPhHHH@`IHH5H=ˆ|HH HIXN4MM9VHH HIpIN<1II92HH HI@IN,9HH9N$)KHIIHHH@HHHL@HHH@0HHHR8HH HqHHH HyPHH LQxHH LH9DHH HI0H9D!ىɅt=HHHJ8HHHR0IHHH5t~H={H9DHH HI8H9D!ىɅt=HHHJ8HHHR0IHHH5 ~H=6{H9DHH HI0H9D!ىɅt:HHHH0HHH@8IHH5}H="zH9DHH HI8H9D!ىɅt:HHHH0HHH@8IHH5E}H=nzHH)HHH9DHH HIHH9D!ىɅt=HHHPPHHH@HIHHH5Q}H=JyH9DHH HIPH9D!ىɅt=HHHPPHHH@HIHHH5|H=yH9DHH HIHH9D!ىɅt=HHHPHHHH@PIHHH5|H=|,yH9DHH HIPH9D!ىɅt=HHHPHHHH@PIHHH5|H=xHH)HHM9DHH HIxL9D!ىɅt@HHHHHH@xIHLH5U}H=NxM9DHH HL9D!ىɅt@HHHHHH@xIHLH5|H=1wM9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5~|H=ǃwwM9DHH HL9D!ىɅt@HHHPxHHHIHLH5|H=Z wLL)HHLeMHcIHH HI`L9Ʌt=HHHPhHHH@`IHLH5H=vHH HIhL9Ʌt=HHHPhHHH@`IHLH5H=@vHH HIXIN4MM9VHH HIpIN<1II92HH HI@IN,9HH9N)N$HIIHHH@IHHHxEHUHcҋMHcHDHH HI0HD!Ʌt?HHHP8HHH@0IHH5wH=(uHDHH HI8HD!Ʌt?HHHP8HHH@0IHH5wH=tHDHH HI0H9D!Ʌt=HHHJ0HHHR8IHHH5,wH=UtHDHH HI8H9D!Ʌt=HHHJ0HHHR8IHHH5vH=sHHHHDHH HIHHD!Ʌt?HHHPPHHH@HIHH5vH=C{sHDHH HIPHD!Ʌt?HHHPPHHH@HIHH5gvH=sHDHH HIHH9D!Ʌt:HHHHHHHH@PIHH5vH=srHDHH HIPH9D!Ʌt:HHHHHHHH@PIHH5uH=FrHJHHDHH HI`HD!Ʌt?HHHPhHHH@`IHH5uH=~qHDHH HIhHD!Ʌt?HHHPhHHH@`IHH5uH=1~iqHDHH HI`H9D!Ʌt=HHHP`HHH@hIHHH5tH=}qHDHH HIhH9D!Ʌt=HHHP`HHH@hIHHH5HtH=a}pHNHHH HIxHɅtBHHHHHH@xIHH5+}H=|4pHH HHɅtBHHHHHH@xIHH5|H=|oHH HIpL$9H9aHH HIXHN,!AI9:HH HI@IJ)H9LAOHIHHX[A\A]A^A_]UHHH}tH5R|H=| ogHEH@HtHHEH@HuHxpH5pH=p|nHEH@H oHEH@UHH H}tH5G|H=|pnȑHEHHEH@9EEUHAWAVAUATSH(H}|tH5?|H=x|nTHEHHHP(H@ HH)HHHHH‰EHEHHHP@H@8HH)HHHHH‰EAHEHH@HHEHLpẼHcЋEȃHcHEHH@IHEHLhẼHcEȃHHAELMM MI0IAEE!EEt9HEHHP8HEHH@0IHH5oH=i{lHAELMM MI8IAEE!EEt9HEHHP8HEHH@0IHH59oH={blHAELMM MI0I9AEE!EEt4HEHHH0HEHH@8IHH5nH=zlHAELMM MI8I9AEE!EEt4HEHHH0HEHH@8IHH5wnH=@zkLJAMMIHAELMM MIHIAEE!EEt9HEHHPPHEHH@HIHH5nH=y(kHAELMM MIPIAEE!EEt9HEHHPPHEHH@HIHH5nH=ayjHAELMM MIHI9AEE!EEt7HEHHPHHEHH@PIHHH5mH=x]jHAELMM MIPI9AEE!EEt7HEHHPHHEHH@PIHHH5PmH=xiLNAMMHHAELeM$$Md$0IAEE!EEt9HEHHP8HEHH@0IHH5VlH=GxiHAELeM$$Md$8IAEE!EEt9HEHHP8HEHH@0IHH5kH=wiHAELeM$$Md$0I9AEE!EEt7HEHHP0HEHH@8IHHH5kH=xwhHAELeM$$Md$8I9AEE!EEt7HEHHP0HEHH@8IHHH5!kH=wJhLgAMMHM9AEEt.HGHHHLHH5*lH=vgH@DH}H?HHH@@D!׉t9HEHHPPHEHH@HIHH5jH=^vgH@DH}H?HPH@@D!׉t9HEHHPPHEHH@HIHH5jH=u1gH@DH}H?HHH9@@D!׉t7HUHHJHHUHHRPIHHH5&jH=ufH@DH}H?HPH9@@D!׉t7HUHHJHHUHHRPIHHH5iH=5umfHxAHIHL9@@t.HHHHLHH5jH=tfHEHH@`Ht9HEHHPhHEHH@`IHH5|iH=mteHEHH@hHt9HEHHPhHEHH@`IHH5+iH=t|eHEHH@XIHEHH@`Ht9HEHHPhHEHH@`IHH5hH=seHEHH@hHt9HEHHPhHEHH@`IHH5yhH=sdHEHH@XHIſH9HEHH@@HN 0HEHH@@HN(H9Et_N$B N$C\}fTf.AEEN$BN$C \ G}fTdN$B N$C\}fTf.AEEt*NBNC \ |fTAH&HEut H HfHnHEHHf.EċEH([A\A]A^A_]UHATSH0HtH5rH=;r c[HHHHP(H@ HH)HHHHH‰EHxhHDžDžDžHHbHHHHHHbHHbDeE]ED9=HgHDžDžDžHH'bHMHHH0bHHH@HHHHRPH9HH HIHH9!Ʌt=HHHJPHHHRHIHHH5dH=pmaH9HH HIPH9!Ʌt=HHHJPHHHRHIHHH5_dH=`paH9HH HIHH9!Ʌt:HHHHHHHH@PIHH5cH=o`H9HH HIPH9!Ʌt:HHHHHHHH@PIHH5cH=oD`HH)HHɋMLcHH IpHcHEHH HI@HEH)HHUHMHHHRHHHHR0I)HHHR`H)HHHRXHHHHRHH)HHLHHHEHEHuHH_HHu_E9tH5!eH=n*_ED9UU]ZH0[A\]UHAWAVAUATSHHh)tH5dnH=n^HhHHHP(H@ HH)HHHHH‰EHhHHHP@H@8HH)HHHHH‰EHhH@p)ȉEHhH@pEHhHUĉPpHhHH@H`HhHH@HXẼLcEȃLcHhHH@HPHhHH@HHEHcEȃHcHhHH@H@HhHH@H8ẼLcЋEȃLcHhHH@H0HhHH@H(ẼLc؋EHcHhHH@H HhHH@HẼLcEȃLcMHhHH@0H!Љt?HhHHP8HhHH@0IHH5U_H=l~\MHhHH@8H!Љt?HhHHP8HhHH@0IHH5^H='l\MHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5^H=k[MHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5$^H=]kM[MIMIIHhHH@HH!Љt?HhHHPPHhHH@HIHH5,^H=jZIHhHH@PH!Љt?HhHHPPHhHH@HIHH5]H=|jlZIHhHH@HL9!Љt=HhHHPHHhHH@PIHLH5]]H=jZIHhHH@PL9!Љt=HhHHPHHhHH@PIHLH5\H=iYIGHHHIHHhHH@0H!Љt?HhHHP8HhHH@0IHH5[H=\i$YHHhHH@8H!Љt?HhHHP8HhHH@0IHH5[H=hXHHhHH@0H9!Љt=HhHHP0HhHH@8IHHH5,[H=hUXHHhHH@8H9!Љt=HhHHP0HhHH@8IHHH5ZH='hWHFHHHL9t.HFHHHLHH5[H=gWHHhHH@HH!Љt?HhHHPPHhHH@HIHH5ZH=sg;WHHhHH@PH!Љt?HhHHPPHhHH@HIHH5)ZH= gVHHhHH@HH9!Љt=HhHHPHHhHH@PIHHH5YH=flVHHhHH@PH9!Љt=HhHHPHHhHH@PIHHH5]YH=>fVHGHHHH9t+HGHHHHH55ZH=eUIHhHH@0H!Љt?HhHHP8HhHH@0IHH5,XH=eUUIHhHH@8H!Љt?HhHHP8HhHH@0IHH5WH=LeTIHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5]WH=dTIHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5VH=d TIBHHHL9t.IBHHHLHH5XH=5dSMHhHH@HH!Љt?HhHHPPHhHH@HIHH5VH=cmSMHhHH@PH!Љt?HhHHPPHhHH@HIHH5]VH=fcSMHhHH@HL9!Љt=HhHHPHHhHH@PIHLH5UH=cRMHhHH@PL9!Љt=HhHHPHHhHH@PIHLH5UH=bH=rMb;H9DHH HIHH9D!ɉɅt:HHHHHHHH@PIHH5U>H=M:H9DHH HIPH9D!ɉɅt:HHHHHHHH@PIHH5=H=L:HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5=H=6L&:H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5n=H=K9H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5=H=hKX9H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5<H=K8HH)HHLMHH HI0HɅt?HHHP8HHH@0IHH5BH=J8HH HI8HɅt?HHHP8HHH@0IHH5RBH=;J+8IZHH LQ@HH98HH?HXHL$HH9IMMO HHHHH@IHHLXHHH@HHHHRPHH Hy`HH HqhH9DHH HIHH9D!ɉɅt=HHHJPHHHRHIHHH5r:H=SI7H9DHH HIPH9D!ɉɅt=HHHJPHHHRHIHHH5 :H=H6H9DHH HIHH9D!ɉɅt:HHHHHHHH@PIHH59H=HP6H9DHH HIPH9D!ɉɅt:HHHHHHHH@PIHH5C9H=$H5HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5'9H=Gx5H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH58H=IG5H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5Y8H=F4H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH57H={FC4HH)HHLUMHcIHH HI0L9Ʌt=HHHP8HHH@0IHLH5p>H= F3HH HI8L9Ʌt=HHHP8HHH@0IHLH5>H=Ey3K HH LI@HH98HH?HXHL$HH9IMMOHHHHH@IHHLPHHH@0HHHR8HH Hy`HH HqhH9DHH HI0H9D!ɉɅt=HHHJ8HHHR0IHHH5@5H=Di2H9DHH HI8H9D!ɉɅt=HHHJ8HHHR0IHHH54H=bD2H9DHH HI0H9D!ɉɅt:HHHH0HHH@8IHH5u4H=C1H9DHH HI8H9D!ɉɅt:HHHH0HHH@8IHH54H=C:1HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5u4H=&C0H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH54H=B_0H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH53H=XB/H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5@3H=A/HH)HHLMHH HIHHɅt?HHHPPHHH@HIHH5<:H=A%/HH HIPHɅt?HHHPPHHH@HIHH59H=+A.HH HI@JH92HH HIXHLHH9NO HHHHH@IHHLXHHH@0HHHR8HH Hy`HH HqhH9DHH HI0H9D!ɉɅt=HHHJ8HHHR0IHHH50H=L@-H9DHH HI8H9D!ɉɅt=HHHJ8HHHR0IHHH540H=?]-H9DHH HI0H9D!ɉɅt:HHHH0HHH@8IHH5/H=?,H9DHH HI8H9D!ɉɅt:HHHH0HHH@8IHH5l/H=?,HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5/H=>!,H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5i/H=B>+H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5/H==S+H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5.H=t=*HH)HHLUЋMHcIHH HIHL9Ʌt=HHHPPHHH@HIHLH5 6H==z*HH HIPL9Ʌt=HHHPPHHH@HIHLH55H=<"*HH HI@IJH92HH HIXHLHH9N OHHHHH@HHHHpẼHUȃHcHDHH HI0HD!Ʌt?HHHP8HHH@0IHH5,H=;:)HDHH HI8HD!Ʌt?HHHP8HHH@0IHH5+H=;(HDHH HI0H9D!Ʌt=HHHJ0HHHR8IHHH5>+H=;g(HDHH HI8H9D!Ʌt=HHHJ0HHHR8IHHH5*H=:'HHHHDHH HIHHD!Ʌt?HHHPPHHH@HIHH5*H==:'HDHH HIPHD!Ʌt?HHHPPHHH@HIHH5y*H=9"'HDHH HIHH9D!Ʌt:HHHHHHHH@PIHH5*H=m9&HDHH HIPH9D!Ʌt:HHHHHHHH@PIHH5)H=9X&HJHHH HI`HɅt?HHHPhHHH@`IHH58H=8%HH HIhHɅt?HHHPhHHH@`IHH5{8H=L8%HH HIXL1H9:HH HI@HNH9NAN HHHH0[A\]UHHH}hHtH5/8H=h8%@HHEH@HtHHEH@HuHm&H5t&H=M8$HEH@H%HEH@GUHH H}GtH5$8H=]8e$GHEHHEH@9EEvGUHH H}^GtH5%8H=^8#6GHEHHHP(H@ HH)HHHHH‰E<HEHH@HHEHLPEHcHEHH@HHEHLHEHH@DH}H?H0H@@D!ljt9HEHHP8HEHH@0IHH5%H=7#H@DH}H?H8H@@D!ljt9HEHHP8HEHH@0IHH5%H=87"H@DH}H?H0H9@@D!ljt4HEHHH0HEHH@8IHH5(%H=6Q"H@DH}H?H8H9@@D!ljt4HEHHH0HEHH@8IHH5$H=z6!HzAHIHHAELEMM@0IAEE!EEt9HEHHP8HEHH@0IHH5Q$H=*6z!HAELEMM@8IAEE!EEt9HEHHP8HEHH@0IHH5#H=5!HAELEMM@0I9AEE!EEt7HUHHJ0HUHHR8IHHH5#H=_5 HAELEMM@8I9AEE!EEt7HUHHJ0HUHHR8IHHH5"#H=4K L@AMMHI9AEEt.HHHHHHH5+$H=4HEHH@HHt9HEHHPPHEHH@HIHH5#H=24HEHH@PHt9HEHHPPHEHH@HIHH5"H=3YHEHH@@J<HEHH@HHt9HEHHPPHEHH@HIHH5O"H=3HEHH@PHt9HEHHPPHEHH@HIHH5!H=V3HEHH@@HNH9;L 8B N B\7fTf.AEEu'HH~ I IfInH9_L 8B N B\77fTf.AEEt$L 8BN B \ 7fTHHEHHf.EE@UHSH(H@tH5J2H=2k@H #HDžDžDžHHDHHHHHHDHHH"HDžDžDžHHHHH@0HHHR8H9HH HI0H9!Ʌt=HHHJ8HHHR0IHHH5H=w17H9HH HI8H9!Ʌt=HHHJ8HHHR0IHHH5H=1H9HH HI0H9!Ʌt:HHHH0HHH@8IHH5GH=0pH9HH HI8H9!Ʌt:HHHH0HHH@8IHH5H=N0HH)HHHH IXHcHEHEH)HHUHEHHHRHHHHR0HH)HHHH@HH)HHH@@HHHHHEHEHuHH|HHaq=H([]UHAWAVAUATSHxH}H=tH5_/H=/ =HEHHHP(H@ HH)HHHHH‰EHEH@X)ȉEHEH@XEHEHUȉPXHEHH@IHEHH@HEẼHHUHHRIHUHHRHxUHcHUHHRIHUHLzŨHcHHMH HI0H!Ʌt9HEHHP8HEHH@0IHH5H=.HHMH HI8H!Ʌt9HEHHP8HEHH@0IHH52H=+.[HHMH HI0H9!Ʌt7HUHHJ0HUHHR8IHHH5H=-HHMH HI8H9!Ʌt7HUHHJ0HUHHR8IHHH5zH=s-HHIH@DH}H?H0H@@D!ljt9HEHHP8HEHH@0IHH5 H=*-2H@DH}H?H8H@@D!ljt9HEHHP8HEHH@0IHH5H=,H@DH}H?H0H9@@D!ljt7HEHHP0HEHH@8IHHH5BH=c,kH@DH}H?H8H9@@D!ljt7HEHHP0HEHH@8IHHH5H=, H~AHIHH9@@t+HFHHHHH5H=+H@@HuH6Hv0H@@!t9HEHHP8HEHH@0IHH51H=*+ZH@@HuH6Hv8H@@!t9HEHHP8HEHH@0IHH5H=*H@@HuH6Hv0H9@@!t4HEHHH0HEHH@8IHH5oH=h*H@@HuH6Hv8H9@@!t4HEHHH0HEHH@8IHH5H= *:HrHHHH9@@t+HBHHHHH5H=)UHcHpUHcHhUHcH`HXHEHEHEH]HCHHStHHHDHHu H= THEHEHpHUHHRHH9҅t7HUHHJPHUHHRHIHHH5%)H=(HUHHRPH9҅t7HUHHJPHUHHRHIHHH5(H=(HUHHR@HLEIHhHUHHRHH9҅t7HUHHJPHUHHRHIHHH5j(H=;(CHUHHRPH9҅t7HUHHJPHUHHRHIHHH5(H='HUHHR@HHxHH`HUHHRHH9҅t7HUHHJPHUHHRHIHHH5'H=U'HUHHRPH9҅t7HUHHJPHUHHRHIHHH5]'H='6HUHHR@HJ48H9>HUHHLA HHHADXf(*YH뽸H9HPH 2HUHIHHEHtHHEHHUH3Hx[A\A]A^A_]UHSHH}Hu3tH5&H='Co3HEH;EHEHUH2H0HrHpHrHpHrHpHr Hp Hr(Hp(Hr0Hp0Hr8Hp8Hr@Hp@HrHHpHHrPHpPHRXHPXHEH@HHEHPPHEH@HHH)HHPHEH@@HHHHHDHHu H=GHUHBH4HEHPHEH@HHHH HEH@@2H[]UHSH(HHH2tH5%H=%1HHH@HtHHH@HHHH@HH@@HcHH@HHHHHHHt#H~HHHPHteHfWf.tHHHfHn &f.f. Ѕt&HH@HQHDžpDžDžHH HMHHH HH[ HHH@ HHH@0HHUHcHP8HHH@(EܺHHcHt-HHH?HHtHHHHBHHHHBPHHHB@H?H9҅t<2H HHH9҅tHHӋE܅tHH҅tH= HHHRH-HHDH Hu H= HHHHPHHHXH-HDžvDžDžHH[ HMHHHv HMHHH[ HH HHH@HHHL@HHHPHHHH@PH9@@HH6HvHH9@@!u!YH, H5H=!| HHHHPHHH@HIHH5 H=!B H9@@HH6HvPH9@@!t:HHHHPHHH@HIHH53 H=T! H9@@HH6HvHH9@@!t=HHHJHHHHRPIHHH5 H= s H9@@HH6HvPH9@@!t=HHHJHHHHRPIHHH5a H= HH)HHHuHH?H0H@@t?HHHP8HHH@0IHH5H= HH?H8H@@t?HHHP8HHH@0IHH5gH=@MHHH?LG@H9HILH4HHHH@HHHLHHHHPHHHH@PH9@@HH6HvHH9@@!t:HHHHPHHH@HIHH5 H=tH9@@HH6HvPH9@@!t:HHHHPHHH@HIHH5e H=H9@@HH6HvHH9@@!t=HHHJHHHHRPIHHH5 H=EH9@@HH6HvPH9@@!t=HHHJHHHHRPIHHH5 H=<HH)HHH}uHcLMM@0I9AEEt=HHHP8HHH@0IHHH5iH=jLMM@8I9AEEt=HHHP8HHH@0IHHH5H=oIHH6LF@H9HILHh4h*h hh h LAS%Recursive call to nonrecursive procedure 'final_field_3d'At line 1337 of file iterator.f90objectAttempt to DEALLOCATE unallocated '%s'At line 1349 of file iterator.f90Recursive call to nonrecursive procedure 'runaway_field_3d'At line 1316 of file iterator.f90Recursive call to nonrecursive procedure 'converged_field_3d'At line 1286 of file iterator.f90Index '%ld' of dimension 1 of array 'object' outside of expected range (%ld:%ld)At line 1307 of file iterator.f90Index '%ld' of dimension 2 of array 'object' outside of expected range (%ld:%ld)Index '%ld' of dimension 3 of array 'object' outside of expected range (%ld:%ld)At line 1308 of file iterator.f90Array bound mismatch for dimension 1 of array 'object' (%ld/%ld)Array bound mismatch for dimension 2 of array 'object' (%ld/%ld)Array bound mismatch for dimension 3 of array 'object' (%ld/%ld)Index '%ld' of dimension 4 of array 'object' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure 'write_field_3d'At line 1245 of file iterator.f90iterator.f90At line 1274 of file iterator.f90Loop variable has been modifiedAt line 1272 of file iterator.f90At line 1270 of file iterator.f90Recursive call to nonrecursive procedure 'step_field_3d'At line 1189 of file iterator.f90At line 1227 of file iterator.f90At line 1229 of file iterator.f90At line 1230 of file iterator.f90At line 1231 of file iterator.f90At line 1232 of file iterator.f90At line 1233 of file iterator.f90Memory allocation failedIndex '%ld' of dimension 4 of array 'sixth' outside of expected range (%ld:%ld)At line 1228 of file iterator.f90Recursive call to nonrecursive procedure '__copy_field_iterator_Field_3d_t'At line 1074 of file iterator.f90Recursive call to nonrecursive procedure 'setup_field_3d'At line 1070 of file iterator.f90Integer overflow when calculating the amount of memory to allocateAllocation would exceed memory limitAttempting to allocate already allocated variable '%s'At line 1160 of file iterator.f90At line 1168 of file iterator.f90Index '%ld' of dimension 1 of array 'a' outside of expected range (%ld:%ld)At line 1169 of file iterator.f90Index '%ld' of dimension 1 of array 'b' outside of expected range (%ld:%ld)At line 1170 of file iterator.f90Index '%ld' of dimension 2 of array 'c' outside of expected range (%ld:%ld)At line 1171 of file iterator.f90Index '%ld' of dimension 2 of array 'd' outside of expected range (%ld:%ld)At line 1172 of file iterator.f90Index '%ld' of dimension 3 of array 'e' outside of expected range (%ld:%ld)At line 1173 of file iterator.f90Index '%ld' of dimension 3 of array 'f' outside of expected range (%ld:%ld)At line 1177 of file iterator.f90Index '%ld' of dimension 4 of array 'zero' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure 'final_field_2d'At line 1048 of file iterator.f90At line 1060 of file iterator.f90Recursive call to nonrecursive procedure 'runaway_field_2d'At line 1027 of file iterator.f90Recursive call to nonrecursive procedure 'converged_field_2d'At line 998 of file iterator.f90At line 1018 of file iterator.f90At line 1019 of file iterator.f90Recursive call to nonrecursive procedure 'write_field_2d'At line 962 of file iterator.f90At line 988 of file iterator.f90At line 986 of file iterator.f90Recursive call to nonrecursive procedure 'step_field_2d'At line 910 of file iterator.f90At line 947 of file iterator.f90At line 948 of file iterator.f90At line 949 of file iterator.f90At line 950 of file iterator.f90Index '%ld' of dimension 3 of array 'quarter' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure '__copy_field_iterator_Field_2d_t'At line 797 of file iterator.f90Recursive call to nonrecursive procedure 'setup_field_2d'At line 793 of file iterator.f90At line 883 of file iterator.f90At line 891 of file iterator.f90At line 892 of file iterator.f90At line 893 of file iterator.f90At line 894 of file iterator.f90At line 898 of file iterator.f90Index '%ld' of dimension 3 of array 'zero' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure 'final_field_1d'At line 771 of file iterator.f90At line 783 of file iterator.f90Recursive call to nonrecursive procedure 'runaway_field_1d'At line 750 of file iterator.f90Recursive call to nonrecursive procedure 'converged_field_1d'At line 722 of file iterator.f90At line 741 of file iterator.f90At line 742 of file iterator.f90Recursive call to nonrecursive procedure 'write_field_1d'At line 700 of file iterator.f90At line 714 of file iterator.f90Recursive call to nonrecursive procedure 'step_field_1d'At line 651 of file iterator.f90At line 687 of file iterator.f90At line 688 of file iterator.f90Index '%ld' of dimension 2 of array 'half' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure '__copy_field_iterator_Field_1d_t'At line 540 of file iterator.f90Recursive call to nonrecursive procedure 'setup_field_1d'At line 536 of file iterator.f90At line 626 of file iterator.f90At line 634 of file iterator.f90At line 635 of file iterator.f90At line 639 of file iterator.f90Index '%ld' of dimension 2 of array 'zero' outside of expected range (%ld:%ld)Recursive call to nonrecursive procedure 'heat_iteration'At line 1372 of file iterator.f90heat iteration convergedheat iteration runawayheat_iterationUUUUUU?<??zRx 4  4Tg b <   v <hE 2 < mm8 X8 4L@- # <Ap4 [4 4u  4"vg b <4Qv    <tP  A <  4  <,m  ^ 4l"  4g b 4  4y l <LI    4u k 4  u ,A7 4,H= 8 __p$x$$$",6@JT^hr|T|=|=|=Y` @!4_9Tx !8)ſn’  "\P]$|="UB`0XDXDX@dyld_stub_binderQr8rH@__gfortran_os_errorrP@__gfortran_runtime_errorrX@__gfortran_runtime_error_atr`@__gfortran_set_argsrh@__gfortran_set_optionsrp@__gfortran_st_readrx@__gfortran_st_read_doner@__gfortran_st_writer@__gfortran_st_write_doner@__gfortran_stop_stringr@__gfortran_transfer_array_writer@__gfortran_transfer_character_writer@__gfortran_transfer_integerr@__gfortran_transfer_integer_writer@__gfortran_transfer_realr@_exitr@_freer@_mallocr@_memcpy_ startF_*mainNXArgenvironmh_execute_headerB_Kfield_iterator_MOD_iterator_MOD___vtab_iterator_Iterator_tprognamefinal_field_runaway_field_converged_field_write_field_s__3d2d1d3d2d1d3d2d1d 3d2d1d=tep_field_etup_field_3d2d1dHcopy_field_iterator_Field_def_init_field_iterator_Field_vtab_field_iterator_Field_3d_t2d_t1d_t3d2d1d¥͹1d_t2d_t3d_t1d_t2d_t3d_tcv<g phg78g 4H.6@H #S $j $ $ $ $ $ $ $ $ $0 $F $\ $r $ $ $ $ $ $ $  $ $4 p$< x$D{8\ @!$ !_ " " # #?4h)P2'N)P’w_ſ] 91nU$y  $3 $<BH\u+Ko>?@ABCDEFGHIJKLMNOPQ@>?@ABCDEFGHIJKLMNOP dyld_stub_binding_helper__dyld_func_lookup_MAIN___options.116.2532_heat.2513_is_recursive.107.2514_is_recursive.98.2459_is_recursive.97.2450_is_recursive.94.2410_is_recursive.90.2397_is_recursive.87.2381_is_recursive.86.2378_is_recursive.85.2375_is_recursive.69.2271_is_recursive.68.2259_is_recursive.63.2190_is_recursive.58.2168_is_recursive.52.2142_is_recursive.51.2138_is_recursive.50.2135_is_recursive.23.1955_is_recursive.22.1940_is_recursive.15.1829_is_recursive.9.1794_is_recursive.2.1758_is_recursive.1.1753_is_recursive.0.1750_NXArgc_NXArgv___field_iterator_MOD___copy_field_iterator_Field_1d_t___field_iterator_MOD___copy_field_iterator_Field_2d_t___field_iterator_MOD___copy_field_iterator_Field_3d_t___field_iterator_MOD___def_init_field_iterator_Field_1d_t___field_iterator_MOD___def_init_field_iterator_Field_2d_t___field_iterator_MOD___def_init_field_iterator_Field_3d_t___field_iterator_MOD___vtab_field_iterator_Field_1d_t___field_iterator_MOD___vtab_field_iterator_Field_2d_t___field_iterator_MOD___vtab_field_iterator_Field_3d_t___field_iterator_MOD_converged_field_1d___field_iterator_MOD_converged_field_2d___field_iterator_MOD_converged_field_3d___field_iterator_MOD_final_field_1d___field_iterator_MOD_final_field_2d___field_iterator_MOD_final_field_3d___field_iterator_MOD_runaway_field_1d___field_iterator_MOD_runaway_field_2d___field_iterator_MOD_runaway_field_3d___field_iterator_MOD_setup_field_1d___field_iterator_MOD_setup_field_2d___field_iterator_MOD_setup_field_3d___field_iterator_MOD_step_field_1d___field_iterator_MOD_step_field_2d___field_iterator_MOD_step_field_3d___field_iterator_MOD_write_field_1d___field_iterator_MOD_write_field_2d___field_iterator_MOD_write_field_3d___iterator_MOD___vtab_iterator_Iterator_t___progname__mh_execute_header_environ_mainstart__gfortran_os_error__gfortran_runtime_error__gfortran_runtime_error_at__gfortran_set_args__gfortran_set_options__gfortran_st_read__gfortran_st_read_done__gfortran_st_write__gfortran_st_write_done__gfortran_stop_string__gfortran_transfer_array_write__gfortran_transfer_character_write__gfortran_transfer_integer__gfortran_transfer_integer_write__gfortran_transfer_real_exit_free_malloc_memcpydyld_stub_binderDay-II/01-Inheritance/iterator.f90100777 0 0 110462 11777555264 12120 0! bof ! ********************************************************************** ! Fortran 2003 module iterator ! ********************************************************************** ! Source Control Strings ! $Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $ ! ********************************************************************** ! Copyright 2012 Dan Nagle ! This library is free software; you can redistribute it and/or ! modify it under the terms of the GNU Library General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later version. ! This library is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! Library General Public License for more details. ! You should have received a copy of the GNU Library General Public ! License along with this library; if not, write to the Free ! Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! To report bugs, suggest enhancements, or other communication to the Authors, ! Contact: ! Dan Nagle ! send email to dannagle@verizon.net ! This file contains three program units, two modules and a program. ! module iterator- type iterator_t ! The first module defines an "iterator type", which names the basic ! services needed by any floating point based calculation requiring ! iteration for its solution. Using the abstract type allows ! a programmer to write code that uses any type extended from the abstract type. ! The details of the calculation are hidden in the extended types. ! module field_iterator- type field_t ! The second module adds data which needs to be iterated and procedures ! to provide the iteration. (In this example, a simple 1-, 2-, or 3-d field ! to be solved for boundary conditions via nearest neighbor smoothing.) ! program heat_iteration- compute heat distribution ! The program initializes the iteration and computes the iteration using ! the procedures supplied. Since "all the work" is specified within ! the iterator_t and the field_t, the program itself is especially simple. ! Not too much attention has been spent with nonessential details, ! such as input/output. ! ********************************************************************** ! iterator description ! This module defines an abstract type which may be extended ! to form other types which supports simple iteration. That is, ! iteration may be done by type bound procedures of the extended ! types. Note that no variables of the abstract type may be declared; ! its only use is to be extended. ! The iteration supported is a simple iteration as seen in many ! floating point calculations, it is designed so that either achieving ! a prescribed tolerance or exceeding a maximum number of iterations ! without achieving a tolerance may be detected. ! ********************************************************************** ! iterator ! ********************************************************************** module iterator ! ********************************************************************** ! select the real kind to use use, intrinsic :: iso_fortran_env, only: real_k => real64 ! ********************************************************************** ! explicit names implicit none ! ********************************************************************** ! explicit exports private ! export the real kind used public :: real_k ! ********************************************************************** ! iterator RCS strings ! ********************************************************************** ! module source filename supplied by RCS character( len= *), public, parameter :: iterator_rcs_id = & '$Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $' ! ********************************************************************** ! iterator types ! ********************************************************************** ! define the abstract type ! The name of the type is iterator_t. ! Public means (after the private above, which applies to the entire module), ! that the name is visible outside this module. ! Abstract means no variable of this type may be declared, ! the only purpose of this type is to be extended by other types. ! This abstract type codifies what any real-based iteration must have: ! a count of iterations and a maximum count, and a tolerance for convergence. ! An iteration must also have a way to initialize its data, a way ! to take a single step, and a test for convergence. type, public, abstract :: iterator_t ! any iteration will have an iteration count ! by default, at the beginning, there are zero iterations integer :: iteration_count = 0 ! any iteration will have a maximum number of iterations allowed ! see the setup procedure integer :: maximum_count = 5000 ! any iteration will have a tolerance indicating convergence ! again, see the setup procedure real( kind= real_k) :: tolerance = 1.0e-10_real_k ! these are procedures which must be supplied by any iteration contains ! The name in parenthesis following the procedure keyword ! is the name of an abstract interface, ! any actual procedure purporting to fulfill the role ! of the deferred procedure must match the abstract interface. ! pass means that the procedure may be referenced similarly to a component, ! that is, using the variable% name[( args)] syntax where variable is passed ! as the pass argument ! deferred means that this type does not actually have such a procedure, ! but that any type which is going to extend this type, ! that is, to be used to actually declare variables ! must supply such a procedure with an interface matching the abstract one ! any iteration must be initialized procedure( setup_signature), pass( object), deferred :: setup_iterator ! any iteration must define one step of the iteration procedure( step_signature), pass( object), deferred :: step_iterator ! any iteration must define its convergence criteria procedure( converged_signature), pass( object), deferred :: converged_iterator ! any iteration must define its maximum count criteria procedure( runaway_signature), pass( object), deferred :: runaway_iterator ! any iteration must define a write routine procedure( write_signature), pass( object), deferred :: write_iterator end type iterator_t ! the abstract interfaces do not represent actual procedures ! (as would ordinary interfaces) but rather they are the signatures ! which any actual procedure must match in order to be ! a procedure fulfilling the role of the deferred procedure ! define the interfaces the iterator_t deferred procedures must have ! abstract interface ! any procedure fulfilling the role of the setup procedure ! must match this interface ! this subroutine initializes the iteration subroutine setup_signature( object, maximum_steps, set_tolerance) import :: iterator_t, real_k ! class means any variable of a type extended from iterator_t class( iterator_t), intent( out) :: object ! might want to change the default maximum number of iterations integer, optional, intent( in) :: maximum_steps ! might want to change the tolerance real( kind= real_k), optional, intent( in) :: set_tolerance end subroutine setup_signature ! any procedure fulfilling the role of the iterate_once procedure ! must match this interface ! this subroutine computes one step of the iteration subroutine step_signature( object) import :: iterator_t ! class means any variable of a type extended from iterator_t class( iterator_t), intent( in out) :: object end subroutine step_signature ! any procedure fulfilling the role of the converged procedure ! must match this interface ! this function returns true when the iteration has converged function converged_signature( object) result( converged) import :: iterator_t ! the function result type logical :: converged ! class means any variable of a type extended from iterator_t class( iterator_t), intent( in) :: object end function converged_signature ! any procedure fulfilling the role of the maximum count procedure ! must match this interface ! this function returns true when the iteration has runaway function runaway_signature( object) result( converged) import :: iterator_t ! the function result type logical :: converged ! class means any variable of a type extended from iterator_t class( iterator_t), intent( in) :: object end function runaway_signature ! any procedure fulfilling the role of the write procedure ! must match this interface ! this writes the value of the object to * subroutine write_signature( object) import :: iterator_t ! class means any variable of a type extended from iterator_t class( iterator_t), intent( in) :: object end subroutine write_signature end interface ! ********************************************************************** ! iterator ! $Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $ ! ********************************************************************** end module iterator ! ********************************************************************** ! Fortran 2003 module field_iterator ! ********************************************************************** ! field_iterator description ! This module defines a type which is an extension of the iterator_t ! defined in module iterator. This type is a 2 dimensional field, ! with boundary conditions along the four edges. The iteration defined ! for this type is a simple Poisson iteration, that is, ! a_i,j = 0.25 * ( a_i-1,j + a_i+1,j + a_i,j-1 + a_i,j+1 ) ! This could be any 2-d diffusion calculation. ! ********************************************************************** ! field_iterator ! ********************************************************************** module field_iterator ! ********************************************************************** ! abstract iteration type and the real kind to use use :: iterator, only: iterator_t, real_k ! ********************************************************************** ! explicit names implicit none ! ********************************************************************** ! explicit exports private ! ********************************************************************** ! field_iterator RCS strings ! ********************************************************************** ! module source filename supplied by RCS character( len= *), public, parameter :: field_iterator_rcs_id = & '$Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $' ! ********************************************************************** ! field_iterator types ! ********************************************************************** ! this type adds to the iterator_t the components needed for the 1-d field type, public, extends( iterator_t) :: field_1d_t ! the components are known only to module procedures private ! the values of interest real( kind= real_k), dimension( :, :), allocatable :: values ! the target of the next update integer :: update = 2 contains ! initialize the iteration procedure, pass( object) :: setup_iterator => setup_field_1d generic :: setup => setup_iterator ! one step procedure, pass( object) :: step_iterator => step_field_1d generic :: step => step_iterator ! compute convergence or not procedure, pass( object) :: converged_iterator => converged_field_1d generic :: converged => converged_iterator ! compute runaway or not procedure, pass( object) :: runaway_iterator => runaway_field_1d generic :: runaway => runaway_iterator ! write values to * procedure, pass( object) :: write_iterator => write_field_1d generic :: write_field => write_iterator ! deallocate the data component ! final :: final_field_1d end type field_1d_t ! ********************************************************************** ! this type adds to the iterator_t the components needed for the 2-d field type, public, extends( iterator_t) :: field_2d_t ! the components are known only to module procedures private ! the values of interest real( kind= real_k), dimension( :, :, :), allocatable :: values ! the target of the next update integer :: update = 2 contains ! initialize the iteration procedure, pass( object) :: setup_iterator => setup_field_2d generic :: setup => setup_iterator ! one step procedure, pass( object) :: step_iterator => step_field_2d generic :: step => step_iterator ! compute convergence or not procedure, pass( object) :: converged_iterator => converged_field_2d generic :: converged => converged_iterator ! compute runaway or not procedure, pass( object) :: runaway_iterator => runaway_field_2d generic :: runaway => runaway_iterator ! write values to * procedure, pass( object) :: write_iterator => write_field_2d generic :: write_field => write_iterator ! deallocate the data component ! final :: final_field_2d end type field_2d_t ! ********************************************************************** ! this type adds to the iterator_t the components needed for the 2-d field type, public, extends( iterator_t) :: field_3d_t ! the components are known only to module procedures private ! the values of interest real( kind= real_k), dimension( :, :, :, :), allocatable :: values ! the target of the next update integer :: update = 2 contains ! initialize the iteration procedure, pass( object) :: setup_iterator => setup_field_3d generic :: setup => setup_iterator ! one step procedure, pass( object) :: step_iterator => step_field_3d generic :: step => step_iterator ! compute convergence or not procedure, pass( object) :: converged_iterator => converged_field_3d generic :: converged => converged_iterator ! compute runaway or not procedure, pass( object) :: runaway_iterator => runaway_field_3d generic :: runaway => runaway_iterator ! write values to * procedure, pass( object) :: write_iterator => write_field_3d generic :: write_field => write_iterator ! deallocate the data component ! final :: final_field_3d end type field_3d_t ! ********************************************************************** ! module procedures ! ********************************************************************** ! since field_t extends iterator_t, it must define the procedures ! deferred in the definition of iterator_t contains ! ********************************************************************** ! initialize the field variable subroutine setup_field_1d( object, maximum_steps, set_tolerance) ! heat is the pass argument, it is the "this" variable class( field_1d_t), intent( out) :: object integer, optional, intent( in) :: maximum_steps real( kind= real_k), optional, intent( in) :: set_tolerance ! ********************************************************************** ! setup_field_1d constants ! ---------------------------------------------------------------------- ! define zero so the kind parameter need not be repeated everywhere real( kind= real_k), parameter :: zero = 0.0_real_k ! ********************************************************************** ! setup_field_1d local ! ---------------------------------------------------------------------- ! the sizes of the field integer :: nx ! ---------------------------------------------------------------------- ! read the field values along the four boundaries real( kind= real_k) :: a, b ! ********************************************************************** ! initialize the iteration continue ! a default value for maximum_count was specified ! in the definition of iterator_t so it will be overridden ! only if a maximum_steps argument is present ! if a maximum iteration count was passed, test it set_max: if( present( maximum_steps) )then ! if maximum iteration count is valid, use it valid_max: if( maximum_steps > 0 )then object% maximum_count = maximum_steps end if valid_max end if set_max ! the current iteration count is zero by default ! so this procedure needn't set it ! ---------------------------------------------------------------------- ! a default value for tolerance was not specified ! in the definition of iterator_t so it must be set here ! the valus of set_tolerance is used if present present ! otherwise the default value is supplied here ! if a tolerance was passed, test it set_tol: if( present( set_tolerance) )then ! if tolerance is valid, use it valid_tol: if( set_tolerance > zero )then object% tolerance = max( set_tolerance, epsilon( set_tolerance)) end if valid_tol end if set_tol ! ---------------------------------------------------------------------- ! read the boundary conditions read( unit= *, fmt= *) nx allocate( object% values( nx, 2)) ! read the boundary conditions read( unit= *, fmt= *) a, b ! duplicate for the other half object% values( 1, :) = a object% values( nx, :) = b ! initialize the internal field values object% values( 2: nx - 1, 1) = zero ! ---------------------------------------------------------------------- return end subroutine setup_field_1d ! ********************************************************************** ! compute one step of the iteration subroutine step_field_1d( object) ! constant in update real( kind= real_k), parameter :: half = 0.5_real_k ! heat is the pass argument, it is the "this" variable class( field_1d_t), intent( in out) :: object ! source and sink of update integer :: to_side, from_side ! size of values integer :: n1 ! ---------------------------------------------------------------------- ! one step of a simple Poisson iteration continue n1 = size( object% values, dim= 1) ! alternate 1 -> 2 then 2 -> 1 from_side = 3 - object% update to_side = object% update object% update = from_side ! smooth the field one time object% values( 2: n1 - 1, to_side) = half * ( object% values( 1: n1 - 2, from_side) & + object% values( 3: n1, from_side) ) ! count the steps object% iteration_count = object% iteration_count + 1 return end subroutine step_field_1d ! ********************************************************************** subroutine write_field_1d( object) ! heat is the pass argument, it is the "this" variable class( field_1d_t), intent( in) :: object ! compute converged or not continue write( unit= *, fmt= *) object% iteration_count ! write a row on a line write( unit= *, fmt= *) object% values( :, object% update) return end subroutine write_field_1d ! ********************************************************************** function converged_field_1d( object) result( converged_example) logical :: converged_example ! heat is the pass argument, it is the "this" variable class( field_1d_t), intent( in) :: object ! size of values integer :: n1 ! compute converged or not continue n1 = size( object% values, dim= 1) ! convergence is when the maximum delta is less than the prescribed tolerance converged_example = maxval( abs( object% values( 2: n1 - 1, 1) & - object% values( 2: n1 - 1, 2) )) < object% tolerance return end function converged_field_1d ! ********************************************************************** function runaway_field_1d( object) result( runaway_example) logical :: runaway_example ! heat is the pass argument, it is the "this" variable class( field_1d_t), intent( in) :: object ! compute runaway or not continue ! convergence is when the maximum delta is less than the prescribed tolerance runaway_example = object% iteration_count > object% maximum_count return end function runaway_field_1d ! ********************************************************************** subroutine final_field_1d( object) ! heat is the pass argument, it is the "this" variable type( field_1d_t) :: object ! compute runaway or not continue ! if allocated then deallocate the data if( allocated( object% values) ) deallocate( object% values) return end subroutine final_field_1d ! ********************************************************************** ! initialize the field variable subroutine setup_field_2d( object, maximum_steps, set_tolerance) ! heat is the pass argument, it is the "this" variable class( field_2d_t), intent( out) :: object integer, optional, intent( in) :: maximum_steps real( kind= real_k), optional, intent( in) :: set_tolerance ! ********************************************************************** ! setup_field_2d constants ! ---------------------------------------------------------------------- ! define zero so the kind parameter need not be repeated everywhere real( kind= real_k), parameter :: zero = 0.0_real_k ! ********************************************************************** ! setup_field_2d local ! ---------------------------------------------------------------------- ! the sizes of the field integer :: nx, ny ! ---------------------------------------------------------------------- ! read the field values along the four boundaries real( kind= real_k) :: a, b, c, d ! ********************************************************************** ! initialize the iteration continue ! a default value for maximum_count was specified ! in the definition of iterator_t so it will be overridden ! only if a maximum_steps argument is present ! if a maximum iteration count was passed, test it set_max: if( present( maximum_steps) )then ! if maximum iteration count is valid, use it valid_max: if( maximum_steps > 0 )then object% maximum_count = maximum_steps end if valid_max end if set_max ! the current iteration count is zero by default ! so this procedure needn't set it ! ---------------------------------------------------------------------- ! a default value for tolerance was not specified ! in the definition of iterator_t so it must be set here ! the valus of set_tolerance is used if present present ! otherwise the default value is supplied here ! if a tolerance was passed, test it set_tol: if( present( set_tolerance) )then ! if tolerance is valid, use it valid_tol: if( set_tolerance > zero )then object% tolerance = max( set_tolerance, epsilon( set_tolerance)) end if valid_tol end if set_tol ! ---------------------------------------------------------------------- ! read the boundary conditions read( unit= *, fmt= *) nx, ny allocate( object% values( nx, ny, 2)) ! read the boundary conditions read( unit= *, fmt= *) a, b, c, d ! duplicate for the other half object% values( 1, :, :) = a object% values( nx, :, :) = b object% values( :, 1, :) = c object% values( :, ny, :) = d ! initialize the internal field values object% values( 2: nx - 1, 2: ny - 1, 1) = zero ! ---------------------------------------------------------------------- return end subroutine setup_field_2d ! ********************************************************************** ! compute one step of the iteration subroutine step_field_2d( object) ! constant in update real( kind= real_k), parameter :: quarter = 0.25_real_k ! heat is the pass argument, it is the "this" variable class( field_2d_t), intent( in out) :: object ! source and sink of update integer :: to_side, from_side ! size of values integer :: n1, n2 ! ---------------------------------------------------------------------- ! one step of a simple Poisson iteration continue n1 = size( object% values, dim= 1) n2 = size( object% values, dim= 2) ! alternate 1 -> 2 then 2 -> 1 from_side = 3 - object% update to_side = object% update object% update = from_side ! smooth the field one time object% values( 2: n1 - 1, 2: n2 - 1, to_side) = quarter * ( object% values( 1: n1 - 2, 2: n2 - 1, from_side) & + object% values( 3: n1, 2: n2 - 1, from_side) & + object% values( 2: n1 - 1, 1: n2 - 2, from_side) & + object% values( 2: n1 - 1, 3: n2, from_side) ) ! count the steps object% iteration_count = object% iteration_count + 1 return end subroutine step_field_2d ! ********************************************************************** subroutine write_field_2d( object) ! heat is the pass argument, it is the "this" variable class( field_2d_t), intent( in) :: object ! size of values integer :: n1 ! loop index integer :: i ! compute converged or not continue n1 = size( object% values, dim= 1) write( unit= *, fmt= *) object% iteration_count ! write a row on a line each_row: do i = 1, n1 write( unit= *, fmt= *) i, object% values( i, :, object% update) end do each_row return end subroutine write_field_2d ! ********************************************************************** function converged_field_2d( object) result( converged_example) logical :: converged_example ! heat is the pass argument, it is the "this" variable class( field_2d_t), intent( in) :: object ! size of values integer :: n1, n2 ! compute converged or not continue n1 = size( object% values, dim= 1) n2 = size( object% values, dim= 2) ! convergence is when the maximum delta is less than the prescribed tolerance converged_example = maxval( abs( object% values( 2: n1 - 1, 2: n2 - 1, 1) & - object% values( 2: n1 - 1, 2: n2 - 1, 2) )) < object% tolerance return end function converged_field_2d ! ********************************************************************** function runaway_field_2d( object) result( runaway_example) logical :: runaway_example ! heat is the pass argument, it is the "this" variable class( field_2d_t), intent( in) :: object ! compute runaway or not continue ! convergence is when the maximum delta is less than the prescribed tolerance runaway_example = object% iteration_count > object% maximum_count return end function runaway_field_2d ! ********************************************************************** subroutine final_field_2d( object) ! heat is the pass argument, it is the "this" variable type( field_2d_t) :: object ! compute runaway or not continue ! if allocated then deallocate the data if( allocated( object% values) ) deallocate( object% values) return end subroutine final_field_2d ! ********************************************************************** ! initialize the field variable subroutine setup_field_3d( object, maximum_steps, set_tolerance) ! heat is the pass argument, it is the "this" variable class( field_3d_t), intent( out) :: object integer, optional, intent( in) :: maximum_steps real( kind= real_k), optional, intent( in) :: set_tolerance ! ********************************************************************** ! setup_field_3d constants ! ---------------------------------------------------------------------- ! define zero so the kind parameter need not be repeated everywhere real( kind= real_k), parameter :: zero = 0.0_real_k ! ********************************************************************** ! setup_field_3d local ! ---------------------------------------------------------------------- ! the sizes of the field integer :: nx, ny, nz ! ---------------------------------------------------------------------- ! read the field values along the four boundaries real( kind= real_k) :: a, b, c, d, e, f ! ********************************************************************** ! initialize the iteration continue ! a default value for maximum_count was specified ! in the definition of iterator_t so it will be overridden ! only if a maximum_steps argument is present ! if a maximum iteration count was passed, test it set_max: if( present( maximum_steps) )then ! if maximum iteration count is valid, use it valid_max: if( maximum_steps > 0 )then object% maximum_count = maximum_steps end if valid_max end if set_max ! the current iteration count is zero by default ! so this procedure needn't set it ! ---------------------------------------------------------------------- ! a default value for tolerance was not specified ! in the definition of iterator_t so it must be set here ! the valus of set_tolerance is used if present present ! otherwise the default value is supplied here ! if a tolerance was passed, test it set_tol: if( present( set_tolerance) )then ! if tolerance is valid, use it valid_tol: if( set_tolerance > zero )then object% tolerance = max( set_tolerance, epsilon( set_tolerance)) end if valid_tol end if set_tol ! ---------------------------------------------------------------------- ! read the boundary conditions read( unit= *, fmt= *) nx, ny, nz allocate( object% values( nx, ny, nz, 2)) ! read the boundary conditions read( unit= *, fmt= *) a, b, c, d, e, f ! duplicate for the other half object% values( 1, :, :, :) = a object% values( nx, :, :, :) = b object% values( :, 1, :, :) = c object% values( :, ny, :, :) = d object% values( :, :, 1, :) = e object% values( :, :, nz, :) = f ! initialize the internal field values object% values( 2: nx - 1, 2: ny - 1, 2: nz - 1, 1) = zero ! ---------------------------------------------------------------------- return end subroutine setup_field_3d ! ********************************************************************** ! compute one step of the iteration subroutine step_field_3d( object) ! constant in update real( kind= real_k), parameter :: sixth = 1.0_real_k / 6.0_real_k ! heat is the pass argument, it is the "this" variable class( field_3d_t), intent( in out) :: object ! source and sink of update integer :: to_side, from_side ! size of values integer :: n1, n2, n3 ! ---------------------------------------------------------------------- ! one step of a simple Poisson iteration continue n1 = size( object% values, dim= 1) n2 = size( object% values, dim= 2) n3 = size( object% values, dim= 3) ! alternate 1 -> 2 then 2 -> 1 from_side = 3 - object% update to_side = object% update object% update = from_side ! smooth the field one time object% values( 2: n1 - 1, 2: n2 - 1, 2: n3 - 1, to_side) = sixth * ( & object% values( 1: n1 - 2, 2: n2 - 1, 2: n3 - 1, from_side) & + object% values( 3: n1, 2: n2 - 1, 2: n3 - 1, from_side) & + object% values( 2: n1 - 1, 1: n2 - 2, 2: n3 - 1, from_side) & + object% values( 2: n1 - 1, 3: n2, 2: n3 - 1, from_side) & + object% values( 2: n1 - 1, 2: n2 - 1, 1: n3 - 2, from_side) & + object% values( 2: n1 - 1, 2: n2 - 1, 3: n3, from_side) ) ! count the steps object% iteration_count = object% iteration_count + 1 return end subroutine step_field_3d ! ********************************************************************** subroutine write_field_3d( object) ! heat is the pass argument, it is the "this" variable class( field_3d_t), intent( in) :: object ! size of values integer :: n1, n2 ! loop index integer :: i, j ! compute converged or not continue n1 = size( object% values, dim= 1) n2 = size( object% values, dim= 2) write( unit= *, fmt= *) object% iteration_count ! write a row on a line each_row: do i = 1, n1 each_column: do j = 1, n2 write( unit= *, fmt= *) i, j, object% values( i, j, :, object% update) end do each_column end do each_row return end subroutine write_field_3d ! ********************************************************************** function converged_field_3d( object) result( converged_example) logical :: converged_example ! heat is the pass argument, it is the "this" variable class( field_3d_t), intent( in) :: object ! size of values integer :: n1, n2, n3 ! compute converged or not continue n1 = size( object% values, dim= 1) n2 = size( object% values, dim= 2) n3 = size( object% values, dim= 3) ! convergence is when the maximum delta is less than the prescribed tolerance converged_example = maxval( abs( object% values( 2: n1 - 1, 2: n2 - 1, 2: n3 - 1, 1) & - object% values( 2: n1 - 1, 2: n2 - 1, 2: n3 - 1, 2) )) < object% tolerance return end function converged_field_3d ! ********************************************************************** function runaway_field_3d( object) result( runaway_example) logical :: runaway_example ! heat is the pass argument, it is the "this" variable class( field_3d_t), intent( in) :: object ! compute runaway or not continue ! convergence is when the maximum delta is less than the prescribed tolerance runaway_example = object% iteration_count > object% maximum_count return end function runaway_field_3d ! ********************************************************************** subroutine final_field_3d( object) ! heat is the pass argument, it is the "this" variable type( field_3d_t) :: object ! compute runaway or not continue ! if allocated then deallocate the data if( allocated( object% values) ) deallocate( object% values) return end subroutine final_field_3d ! $Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $ ! ********************************************************************** end module field_iterator ! ********************************************************************** ! Fortran 2003 program heat_iteration ! ********************************************************************** ! heat_iteration describe the program ! ********************************************************************** ! heat_iteration ! ********************************************************************** program heat_iteration ! ********************************************************************** ! heat_iteration uses modules ! ********************************************************************** ! data and procedures for this problem ! this program is designed using the abstract iterator type so it can use ! any type extended from the iterator type- ! all that must be done to switch is change the type field_t renames ! field_t can rename field_1d_t or field_2d_t or field_3d_t use :: field_iterator, only: field_t => field_3d_t ! ********************************************************************** ! turn off implicit typing implicit none ! ********************************************************************** ! heat_iteration RCS strings ! ********************************************************************** ! program source filename supplied by RCS character( len= *), parameter :: heat_iteration_rcs_id = & '$Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $' ! ********************************************************************** ! heat_iteration data ! ********************************************************************** ! heat is a variable of type field ! heat has all the components of the iterator type and the field type type( field_t) :: heat ! ********************************************************************** ! heat_iteration text ! ********************************************************************** continue ! initialize the iteration call heat% setup() ! iterate until success or failure converge: do ! one step of the iteration call heat% step() ! test success iteration_converged: if( heat% converged() )then write( unit= *, fmt= *) 'heat iteration converged' call heat% write_field() exit converge end if iteration_converged ! test failure iteration_failed: if( heat% runaway() )then write( unit= *, fmt= *) 'heat iteration runaway' exit converge end if iteration_failed ! end iterate until success or failure end do converge ! day is done stop 'heat_iteration' ! ********************************************************************** ! heat_iteration ! $Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $ ! ********************************************************************** end program heat_iteration Day-II/01-Inheritance/iterator.mk100777 0 0 533 11777555076 12047 0FC=gfortran -c #FC=ifort -c #FC=nagfor -c FCFLAGS=-std=f2008 -Wall -fcheck=all #FCFLAGS=-std -warn all -check all -heap-arrays #FCFLAGS=-f2008 -w=all -C=all LD=gfortran #LD=ifort #LD=nagfor LDFLAGS=${FCFLAGS} LIBS= iterator: iterator.o ${LD} ${LDFLAGS} iterator.o ${LIBS} -o iterator iterator.o: iterator.f90 ${FC} ${FCFLAGS} iterator.f90 Day-II/01-Inheritance/iterator.mod100777 0 0 17233 11777555102 12252 0GFORTRAN module version '6' created from iterator.f90 on Thu Jul 12 08:08:03 2012 MD5:2e181a594268d9a49a6907f2b5ce0c33 -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) () () () () () (2 '__vtab_iterator_Iterator_t' 'iterator' '__vtab_iterator_Iterator_t' 1 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0 TARGET VTAB) (DERIVED 3 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 3 '__vtype_iterator_Iterator_t' 'iterator' '__vtype_iterator_Iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VTYPE) ( UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((4 '_hash' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (5 '_size' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) PRIVATE) (6 '_extends' (DERIVED 3 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (7 '_def_init' (DERIVED 8 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE) (9 '_copy' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 SUBROUTINE PROC_POINTER) PRIVATE 0 () (UNKNOWN-ACCESS OVERRIDABLE PASS SPECIFIC PPC '' 0)) (10 'converged_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 11 (12) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (13 'setup_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE ALWAYS_EXPLICIT PROCEDURE PROC_POINTER) PRIVATE 14 (15 16 17) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (18 'step_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 19 (20) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (21 'write_iterator' (UNKNOWN 0 0 0 UNKNOWN ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL SUBROUTINE PROCEDURE PROC_POINTER) PRIVATE 22 (23) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0)) (24 'runaway_iterator' (LOGICAL 4 0 0 LOGICAL ()) () (PROCEDURE UNKNOWN-INTENT UNKNOWN-PROC DECL UNKNOWN 0 0 EXTERNAL FUNCTION PROCEDURE PROC_POINTER) PRIVATE 25 (26) (PUBLIC DEFERRED PASS SPECIFIC PPC 'object' 0))) UNKNOWN-ACCESS () () 0 0 0) 27 'iterator_rcs_id' 'iterator' 'iterator_rcs_id' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (CHARACTER 1 0 0 CHARACTER ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '52'))) 0 0 () ( CONSTANT (CHARACTER 1 0 0 CHARACTER (())) 0 52 '$Id: iterator.f90 1.1 2003/05/10 13:24:25Z Dan Exp $') () 0 () () () 0 0) 8 'iterator_t' 'iterator' 'iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 ABSTRACT) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((28 'iteration_count' (INTEGER 4 0 0 INTEGER ()) () ( UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0')) (29 'maximum_count' (INTEGER 4 0 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '5000')) (30 'tolerance' (REAL 8 0 0 REAL ()) () ( UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS (CONSTANT (REAL 8 0 0 REAL ()) 0 '0.6df37f675ef6ec@-8'))) PUBLIC (() (('converged_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 31)) ('runaway_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 32)) ('setup_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 33)) ('step_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 34)) ('write_iterator' (PUBLIC DEFERRED PASS SPECIFIC NO_PPC 'object' 1 35))) () ()) () 0 0 51313748) 36 'real_k' 'iso_fortran_env' 'real_k' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () ( CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '8') () 0 () () () 1 16) 33 'setup_signature' 'iterator' 'setup_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT ALWAYS_EXPLICIT) (UNKNOWN 0 0 0 UNKNOWN ()) 37 0 (38 39 40) () 0 () () () 0 0) 34 'step_signature' 'iterator' 'step_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT) ( UNKNOWN 0 0 0 UNKNOWN ()) 41 0 (42) () 0 () () () 0 0) 31 'converged_signature' 'iterator' 'converged_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 FUNCTION ABSTRACT) (LOGICAL 4 0 0 LOGICAL ()) 43 0 (44) () 45 () () () 0 0) 32 'runaway_signature' 'iterator' 'runaway_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 FUNCTION ABSTRACT) (LOGICAL 4 0 0 LOGICAL ()) 46 0 (47) () 48 () () () 0 0) 35 'write_signature' 'iterator' 'write_signature' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 SUBROUTINE ABSTRACT) ( UNKNOWN 0 0 0 UNKNOWN ()) 49 0 (50) () 0 () () () 0 0) 38 'object' '' 'object' 37 ((VARIABLE OUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 39 'maximum_steps' '' 'maximum_steps' 37 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 40 'set_tolerance' '' 'set_tolerance' 37 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 51 '__class_iterator_Iterator_t' 'iterator' '__class_iterator_Iterator_t' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 1 ABSTRACT IS_CLASS) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ((52 '_data' (DERIVED 8 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER ABSTRACT) PRIVATE ()) (53 '_vptr' (DERIVED 3 0 0 DERIVED ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 POINTER) PRIVATE ())) UNKNOWN-ACCESS (() () () ()) () 0 0 0) 42 'object' '' 'object' 41 ((VARIABLE INOUT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 44 'object' '' 'object' 43 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 45 'converged' '' 'converged' 43 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 47 'object' '' 'object' 46 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 48 'converged' '' 'converged' 46 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 RESULT) (LOGICAL 4 0 0 LOGICAL ()) 0 0 () () 0 () () () 0 0) 50 'object' '' 'object' 49 ((VARIABLE IN UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 12 'object' '' 'object' 11 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 15 'object' '' 'object' 14 ((VARIABLE OUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 16 'maximum_steps' '' 'maximum_steps' 14 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (INTEGER 4 0 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 17 'set_tolerance' '' 'set_tolerance' 14 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 OPTIONAL DUMMY) (REAL 8 0 0 REAL ()) 0 0 () () 0 () () () 0 0) 20 'object' '' 'object' 19 ((VARIABLE INOUT UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 23 'object' '' 'object' 22 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) 26 'object' '' 'object' 25 ((VARIABLE IN UNKNOWN-PROC DECL UNKNOWN 0 0 DUMMY) (CLASS 51 0 0 CLASS ()) 0 0 () () 0 () () () 0 0) ) ('__vtab_iterator_Iterator_t' 0 2 '__vtype_iterator_Iterator_t' 0 3 'iterator_rcs_id' 0 27 'iterator_t' 0 8 'real_k' 0 36) Day-II/01-Inheritance/iterator.o100777 0 0 261264 11777555302 11760 00 xP __text__TEXTPpl__data__DATA pI__cstring__TEXTb__const__TEXT `p__bss2__DATA X__literal8__TEXT (__literal16__TEXT __eh_frame__TEXT `J. hLW PUHHH}tH5H=HEH@HtHHEH@HuHH5H=HEH@HHEH@UHH H}tH5H=HEHHEH@9EEUHAWAVAUATSHHH}tH5H=HEHHHP(H@ HH)HHHHH‰EHEHHHP@H@8HH)HHHHH‰EHEHHHPXH@PHH)HHHHH‰E EAHEHH@IHEHH@HEẼLcЋEȃLc؋EăHcHEHH@IHEHH@HEẼHcEȃLcȋEăHcIHEHH@0H!Љt9HEHHP8HEHH@0IHH5H=IHEHH@8H!Љt9HEHHP8HEHH@0IHH5H=IHEHH@0L9!Љt7HEHHP0HEHH@8IHLH5H=IHEHH@8L9!Љt7HEHHP0HEHH@8IHLH5H=IBHILIIHEHH@HH!Љt9HEHHPPHEHH@HIHH5H=IHEHH@PH!Љt9HEHHPPHEHH@HIHH5H=IHEHH@HL9!Љt7HEHHPHHEHH@PIHLH5H=IHEHH@PL9!Љt7HEHHPHHEHH@PIHLH5H=ICHILIHHEHH@`H!Љt9HEHHPhHEHH@`IHH5H=HHEHH@hH!Љt9HEHHPhHEHH@`IHH5H=HHEHH@`H9!Љt7HEHHP`HEHH@hIHHH5H=HHEHH@hH9!Љt7HEHHP`HEHH@hIHHH5H=HCHHHIHHEHH@0H!Љt9HEHHP8HEHH@0IHH5H=HHEHH@8H!Љt9HEHHP8HEHH@0IHH5H=HHEHH@0H9!Љt7HEHHP0HEHH@8IHHH5H=HHEHH@8H9!Љt7HEHHP0HEHH@8IHHH5H=HFHHHL9t.HFHHHLHH5H=IHEHH@HH!Љt9HEHHPPHEHH@HIHH5H=IHEHH@PH!Љt9HEHHPPHEHH@HIHH5H=IHEHH@HL9!Љt7HEHHPHHEHH@PIHLH5H=IHEHH@PL9!Љt7HEHHPHHEHH@PIHLH5H=IAHHHL9t.IAHHHLHH5H=HHEHH@`H!Љt9HEHHPhHEHH@`IHH5H=HHEHH@hH!Љt9HEHHPhHEHH@`IHH5H=HHEHH@`H9!Љt7HEHHP`HEHH@hIHHH5H=HHEHH@hH9!Љt7HEHHP`HEHH@hIHHH5H=HGHHHH9t+HGHHHHH5H=HEHH@xHtfTf.JAH AL\ fTeEJA H AT\fTf.t+JAH AL\ fTAH&HHEu!}t H HfHnHEHHf.EEHH[A\A]A^A_]UHAVAUATSH0HtH5H=HHHHP(H@ HH)HHHHH‰EHHHHP@H@8HH)HHHHH‰EHHDžDžDžHHHHHHHHHHDmE]ԋED9DuEDeЋED9HHDžDžDžHHHMHHHHMHHHHHH@`HHHRhH9HH HI`H9!Ʌt=HHHJhHHHR`IHHH5H=H9HH HIhH9!Ʌt=HHHJhHHHR`IHHH5H=H9HH HI`H9!Ʌt:HHHH`HHH@hIHH5H=H9HH HIhH9!Ʌt:HHHH`HHH@hIHH5H=HH)HHɋMLcɋMLcHH HcHEHH HIXHEH)HHUHMHHHRHHHHR0I)HHHR`H)HHHHH@HLH)HHH@@HHIHHH@xHH)HHH@pHHHHHEHEHuHHHHED9tH5H=ED9UЃUDeЅoE9tH5H=ED9UԃUԋ]ԅ H0[A\A]A^]UHAWAVAUATSHHHtH5H=HHHHHP(H@ HH)HHHHH‰EHHHHHP@H@8HH)HHHHH‰EHHHHHPXH@PHH)HHHHH‰EHHH)ȉEHHHEHHHUHHHH@H@HHHH@H8ẼHH0EȃHH(EăHH HHHH@HHHHH@HEHcEȃHcEăLcHHHH@HHHHH@HẼLc؋EȃLcЋEăHcHHHH@HHHHH@HẼLcELcEăLcHHHH@HHHHH@HẼHHEȃHHEăLcHHHH@HHHHH@HẼHHEȃHHEHHHHHH@HHHHH@HẼHHEȃHHEăHHH0HHHH@0H!Љt?HHHHP8HHHH@0IHH5H=H0HHHH@8H!Љt?HHHHP8HHHH@0IHH5H=H0HHHH@0H;0!ЉtAHHHHP0HHHH@8IHH0H5H=H0HHHH@8H;0!ЉtAHHHHP0HHHH@8IHH0H5H=H0H0HHH(HHHH@HH!Љt?HHHHPPHHHH@HIHH5H=H(HHHH@PH!Љt?HHHHPPHHHH@HIHH5H=H(HHHH@HH;(!ЉtAHHHHPHHHHH@PIHH(H5H=H(HHHH@PH;(!ЉtAHHHHPHHHHH@PIHH(H5H=H(HHILIH HHHH@`H!Љt?HHHHPhHHHH@`IHH5H=H HHHH@hH!Љt?HHHHPhHHHH@`IHH5H=H HHHH@`H; !ЉtAHHHHP`HHHH@hIHH H5H=H HHHH@hH; !ЉtAHHHHP`HHHH@hIHH H5H=H HHDžHHHIHxHHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@0H9!Љt=HHHHP0HHHH@8IHHH5H=HHHHH@8H9!Љt=HHHHP0HHHH@8IHHH5H=HFHHHH9t+HFHHHHH5H=HHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@HH9!Љt=HHHHPHHHHH@PIHHH5H=HHHHH@PH9!Љt=HHHHPHHHHH@PIHHH5H=HGHHHL9t.HGHHHLHH5H=IHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=IHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=IHHHH@`L9!Љt=HHHHP`HHHH@hIHLH5H=IHHHH@hL9!Љt=HHHHP`HHHH@hIHLH5H=IAHHHH;xt2IAHHHHxHH5H=IHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=IHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=IHHHH@0L9!Љt=HHHHP0HHHH@8IHLH5H=IHHHH@8L9!Љt=HHHHP0HHHH@8IHLH5H=ICHHHH9t+ICHHHHH5H=MHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=MHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=MHHHH@HL9!Љt=HHHHPHHHHH@PIHLH5H=MHHHH@PL9!Љt=HHHHPHHHHH@PIHLH5H=MIIL9t*MIILHH5H=HHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=HHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=HHHHH@`H9!Љt=HHHHP`HHHH@hIHHH5H=HHHHH@hH9!Љt=HHHHP`HHHH@hIHHH5H=HCHHHH;xt2HCHHHHxHH5H=IHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=IHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=IHHHH@0L9!Љt=HHHHP0HHHH@8IHLH5H=IHHHH@8L9!Љt=HHHHP0HHHH@8IHLH5H=ID$HHHH9t,ID$HHHHH5H=IHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=IHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=IHHHH@HL9!Љt=HHHHPHHHHH@PIHLH5H=IHHHH@PL9!Љt=HHHHPHHHHH@PIHLH5H=IEHHHL9t.IEHHHLHH5H=IHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=IHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=IHHHH@`L9!Љt=HHHHP`HHHH@hIHLH5H=IHHHH@hL9!Љt=HHHHP`HHHH@hIHLH5H=IGHHHH;xt2IGHHHHxHH5H=HHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@0H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHH@8H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHHH9t2HHHHHHH5H=HHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@HH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHH@PH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHHL9t5HHHHHLHH5H=MHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=MHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=MHHHH@`L9!Љt=HHHHP`HHHH@hIHLH5H=MHHHH@hL9!Љt=HHHHP`HHHH@hIHLH5H=MIIH;xt.MIIHxHH5H=HHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@0H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHH@8H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHHH9t2HHHHHHH5H=HHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@HH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHH@PH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHHL9t5HHHHHLHH5H=HHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=HHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=HHHHH@`H;!ЉtAHHHHP`HHHH@hIHHH5H=HHHHH@hH;!ЉtAHHHHP`HHHH@hIHHH5H=HHHHHH;xt9HHHHHHxHH5H=HHHHH@0H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@8H!Љt?HHHHP8HHHH@0IHH5H=HHHHH@0H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHH@8H;!ЉtAHHHHP0HHHH@8IHHH5H=HHHHHH9t2HHHHHHH5H=HHHHH@HH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@PH!Љt?HHHHPPHHHH@HIHH5H=HHHHH@HH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHH@PH;!ЉtAHHHHPHHHHH@PIHHH5H=HHHHHL9t5HHHHHLHH5H=HHHHH@`H!Љt?HHHHPhHHHH@`IHH5H=HHHHH@hH!Љt?HHHHPhHHHH@`IHH5H=HHHHH@`H;!ЉtAHHHHP`HHHH@hIHHH5H=HHHHH@hH;!ЉtAHHHHP`HHHH@hIHHH5H=HHHHHH;xt9HHHHHHxHH5H=EHc؋ELcELcELcEHHpEHHhEHH`H0HHXH(HHPL IHDž`HDžhHDžpHXHxHXHHDHXHHUHEHPHMHPHHHPHHHUHEL}IGHIGHHDƒ!‰ȃ!Ѕt HHHDHHu H=HPHDžXHHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHH8HHHLHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHH@LHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHH8LHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHH0HpHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHH(HhHHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHH H`HHHH@xH9t@HHHHHHHH@xIHHH5H=HHHHH9t@HHHHHHHH@xIHHH5H=HHHH@pHHHHL9HEHHHHVHHHH@XHHHHHHVHHHH@XHH@HHHVHHHH@XHH8HHHVHHHH@XHH0HHHVHHHH@XHH(HHHVHHHH@XHH HHH;PHEHLIHQHHHH@@HLIHQHHHH@@HLIHQHHHH@@HHHHHQHHHH@@HLIHQHHHH@@HLIHQHHHH@@HLIH;X LPJ<*HBLHHH@ HBLHHHXHBHHHHH XHBLHHH XHBLHHH XHBLHHH Xf(nYAHHHL9HEILHJHHHH@XHLIùH;PbHEHNHqHHHH@@HJH;X(HpL HPJ<H4HJ4HHHSHPHtHHHHHHHH[A\A]A^A_]UHSHH}HutH5H=HEH;EDHUHEHƸHHHEHEH@HHEHHEH@xHH)HHPHEH@pHHHHHDHHu H=HUHBH4HEHPHEH@HHHH HEH@H[]UHAWAVAUATSHXHHHtH5H=HHH@HtHHH@HHHH@HH@@HcHH@HHHHHHHt#H~HHHPHteHfWf.tHHHfHn f.f. ЅtӽHH@HHDžDžDžHHHMHHHHMHHHHMHHHHHHHH@ HHH@0HHUHcHP8HHH@(EHHcHt-HHH?HHtHHHH@HHHUHcHPPHHHp@EHHcHt-HHH?HH9tD8HHHH@`HHUHcHPhHHHHXEHHcHt-HHH?HH9tAHHHHHBxHHHǂHHHBpH?H9҅tF H<IHI9҅tF HHH)HH)ËEЋE ‹E ЅtHHD…҅tH=HHHRHHHDHHu H=HHHHPHHHXHHDžDžDžHHHMHHHHMHHHHMHHHHMHHHHMHHHHMHHHHHHHH@HHHL@HHHPHHHHpPHHHx`HHLHhHHH@xHH LH9DHH HIHH9D!ىɅu!YHH5H=HHHHPHHH@HIHH5H=H9DHH HIPH9D!ىɅt:HHHHPHHH@HIHH5H=H9DHH HIHH9D!ىɅt=HHHPHHHH@PIHHH5H=H9DHH HIPH9D!ىɅt=HHHPHHHH@PIHHH5H=HH)HHL9DHH HI`H9D!ىɅt=HHHPhHHH@`IHHH5H=L9DHH HIhH9D!ىɅt=HHHPhHHH@`IHHH5H=L9DHH HI`L9D!ىɅt=HHHP`HHH@hIHLH5H=L9DHH HIhL9D!ىɅt=HHHP`HHH@hIHLH5H=LH)HHL9DHH HIxH9D!ىɅt@HHHHHHRxIHHH5H=L9DHH HH9D!ىɅt@HHHHHHRxIHHH5H=L9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5H=L9DHH HL9D!ىɅt@HHHPxHHHIHLH5H=LH)HHLeHH HI0HɅt?HHHP8HHH@0IHH5H=HH HI8HɅt?HHHP8HHH@0IHH5H=MpHH Li@HL9fHHH@pHN<0IM9BHHH@XILHHH9IMLN$HIHHHH@HHHL@HHHpHHHHxPHHLH`HHLPhHHH@xHHLH9HHHRHH9!ʉ҅t=HHHPPHHH@HIHHH5H=H9HHHRPH9!ʉ҅t=HHHPPHHH@HIHHH5H=H9HHHRHH9!ʉ҅t=HHHPHHHH@PIHHH5H=H9HHHRPH9!ʉ҅t=HHHPHHHH@PIHHH5H=HH)HHM9HHHR`L9!ʉ҅t=HHHPhHHH@`IHLH5H=M9HHHRhL9!ʉ҅t=HHHPhHHH@`IHLH5H=M9HHHR`L9!ʉ҅t=HHHP`HHH@hIHLH5H=M9HHHRhL9!ʉ҅t=HHHP`HHH@hIHLH5H=LL)HHL9HHHRxH9!ʉ҅t@HHHHHHRxIHHH5H=L9HHHH9!ʉ҅t@HHHHHHRxIHHH5H=L9HHHRxL9!ʉ҅t@HHHPxHHHIHLH5H=L9HHHL9!ʉ҅t@HHHPxHHHIHLH5H=LH)HHLeUHcHH HI0H9Ʌt:HHHH8HHH@0IHH5H=HH HI8H9Ʌt:HHHH8HHH@0IHH5H=M4HHLj@HL9fHHH@pHN<0LL9BHHH@XHLHHH9IMLN$HHHHHH@IHHL@HHH@0HHHR8HH Hq`HH HyhHH LQxHH LH9HH HI0H9!ىɅt=HHHJ8HHHR0IHHH5H=H9HH HI8H9!ىɅt=HHHJ8HHHR0IHHH5H=H9HH HI0H9!ىɅt:HHHH0HHH@8IHH5H=H9HH HI8H9!ىɅt:HHHH0HHH@8IHH5H=HH)HHH9HH HI`H9!ىɅt=HHHPhHHH@`IHHH5H=H9HH HIhH9!ىɅt=HHHPhHHH@`IHHH5H=H9HH HI`H9!ىɅt=HHHP`HHH@hIHHH5H=H9HH HIhH9!ىɅt=HHHP`HHH@hIHHH5H=HH)HHM9HH HIxL9!ىɅt@HHHHHH@xIHLH5H=M9HH HL9!ىɅt@HHHHHH@xIHLH5H=M9HH HIxL9!ىɅt@HHHPxHHHIHLH5H=M9HH HL9!ىɅt@HHHPxHHHIHLH5H=LL)HHH]HH HIHHɅt?HHHPPHHH@HIHH5H=HH HIPHɅt?HHHPPHHH@HIHH5H=HH HI@N4MM9VHH HIpIN<1II92HH HIXIN,9HH9N$)KHIIHHH@HHHL@HHH@0HHHR8HH Hq`HH HyhHH LQxHH LH9DHH HI0H9D!ىɅt=HHHJ8HHHR0IHHH5H=H9DHH HI8H9D!ىɅt=HHHJ8HHHR0IHHH5H=H9DHH HI0H9D!ىɅt:HHHH0HHH@8IHH5H=H9DHH HI8H9D!ىɅt:HHHH0HHH@8IHH5H=HH)HHH9DHH HI`H9D!ىɅt=HHHPhHHH@`IHHH5H=H9DHH HIhH9D!ىɅt=HHHPhHHH@`IHHH5H=H9DHH HI`H9D!ىɅt=HHHP`HHH@hIHHH5H=H9DHH HIhH9D!ىɅt=HHHP`HHH@hIHHH5H=HH)HHM9DHH HIxL9D!ىɅt@HHHHHH@xIHLH5H=M9DHH HL9D!ىɅt@HHHHHH@xIHLH5H=M9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5H=M9DHH HL9D!ىɅt@HHHPxHHHIHLH5H=LL)HHLeMHcIHH HIHL9Ʌt=HHHPPHHH@HIHLH5H=HH HIPL9Ʌt=HHHPPHHH@HIHLH5H=HH HI@IN4MM9VHH HIpIN<1II92HH HIXIN,9HH9N)N$HIIHHH@IHHL@HHH@0HHHR8HH HqHHH HyPHH LQxHH LH9HH HI0H9!ىɅt=HHHJ8HHHR0IHHH5H=H9HH HI8H9!ىɅt=HHHJ8HHHR0IHHH5H=H9HH HI0H9!ىɅt:HHHH0HHH@8IHH5H=H9HH HI8H9!ىɅt:HHHH0HHH@8IHH5H=HH)HHH9HH HIHH9!ىɅt=HHHPPHHH@HIHHH5H=H9HH HIPH9!ىɅt=HHHPPHHH@HIHHH5H=H9HH HIHH9!ىɅt=HHHPHHHH@PIHHH5H=H9HH HIPH9!ىɅt=HHHPHHHH@PIHHH5H=HH)HHM9HH HIxL9!ىɅt@HHHHHH@xIHLH5H=M9HH HL9!ىɅt@HHHHHH@xIHLH5H=M9HH HIxL9!ىɅt@HHHPxHHHIHLH5H=M9HH HL9!ىɅt@HHHPxHHHIHLH5H=LL)HHH]HH HI`HɅt?HHHPhHHH@`IHH5H=HH HIhHɅt?HHHPhHHH@`IHH5H=HH HIXN4MM9VHH HIpIN<1II92HH HI@IN,9HH9N$)KHIIHHH@HHHL@HHH@0HHHR8HH HqHHH HyPHH LQxHH LH9DHH HI0H9D!ىɅt=HHHJ8HHHR0IHHH5H=H9DHH HI8H9D!ىɅt=HHHJ8HHHR0IHHH5H=H9DHH HI0H9D!ىɅt:HHHH0HHH@8IHH5H=H9DHH HI8H9D!ىɅt:HHHH0HHH@8IHH5H=HH)HHH9DHH HIHH9D!ىɅt=HHHPPHHH@HIHHH5H=H9DHH HIPH9D!ىɅt=HHHPPHHH@HIHHH5H=H9DHH HIHH9D!ىɅt=HHHPHHHH@PIHHH5H=H9DHH HIPH9D!ىɅt=HHHPHHHH@PIHHH5H=HH)HHM9DHH HIxL9D!ىɅt@HHHHHH@xIHLH5H=M9DHH HL9D!ىɅt@HHHHHH@xIHLH5H=M9DHH HIxL9D!ىɅt@HHHPxHHHIHLH5H=M9DHH HL9D!ىɅt@HHHPxHHHIHLH5H=LL)HHLeMHcIHH HI`L9Ʌt=HHHPhHHH@`IHLH5H=HH HIhL9Ʌt=HHHPhHHH@`IHLH5H=HH HIXIN4MM9VHH HIpIN<1II92HH HI@IN,9HH9N)N$HIIHHH@IHHHxEHUHcҋMHcHDHH HI0HD!Ʌt?HHHP8HHH@0IHH5H=HDHH HI8HD!Ʌt?HHHP8HHH@0IHH5H=HDHH HI0H9D!Ʌt=HHHJ0HHHR8IHHH5H=HDHH HI8H9D!Ʌt=HHHJ0HHHR8IHHH5H=HHHHDHH HIHHD!Ʌt?HHHPPHHH@HIHH5H=HDHH HIPHD!Ʌt?HHHPPHHH@HIHH5H=HDHH HIHH9D!Ʌt:HHHHHHHH@PIHH5H=HDHH HIPH9D!Ʌt:HHHHHHHH@PIHH5H=HJHHDHH HI`HD!Ʌt?HHHPhHHH@`IHH5H=HDHH HIhHD!Ʌt?HHHPhHHH@`IHH5H=HDHH HI`H9D!Ʌt=HHHP`HHH@hIHHH5H=HDHH HIhH9D!Ʌt=HHHP`HHH@hIHHH5H=HNHHH HIxHɅtBHHHHHH@xIHH5H=HH HHɅtBHHHHHH@xIHH5H=HH HIpL$9H9aHH HIXHN,!AI9:HH HI@IJ)H9LAOHIHHX[A\A]A^A_]UHHH}tH5H=HEH@HtHHEH@HuHH5H=HEH@HHEH@UHH H}tH5H=HEHHEH@9EEUHAWAVAUATSH(H}tH5H=HEHHHP(H@ HH)HHHHH‰EHEHHHP@H@8HH)HHHHH‰EAHEHH@HHEHLpẼHcЋEȃHcHEHH@IHEHLhẼHcEȃHHAELMM MI0IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELMM MI8IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELMM MI0I9AEE!EEt4HEHHH0HEHH@8IHH5H=HAELMM MI8I9AEE!EEt4HEHHH0HEHH@8IHH5H=LJAMMIHAELMM MIHIAEE!EEt9HEHHPPHEHH@HIHH5H=HAELMM MIPIAEE!EEt9HEHHPPHEHH@HIHH5H=HAELMM MIHI9AEE!EEt7HEHHPHHEHH@PIHHH5H=HAELMM MIPI9AEE!EEt7HEHHPHHEHH@PIHHH5H=LNAMMHHAELeM$$Md$0IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELeM$$Md$8IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELeM$$Md$0I9AEE!EEt7HEHHP0HEHH@8IHHH5H=HAELeM$$Md$8I9AEE!EEt7HEHHP0HEHH@8IHHH5H=LgAMMHM9AEEt.HGHHHLHH5H=H@DH}H?HHH@@D!׉t9HEHHPPHEHH@HIHH5H=H@DH}H?HPH@@D!׉t9HEHHPPHEHH@HIHH5H=H@DH}H?HHH9@@D!׉t7HUHHJHHUHHRPIHHH5H=H@DH}H?HPH9@@D!׉t7HUHHJHHUHHRPIHHH5H=HxAHIHL9@@t.HHHHLHH5H=HEHH@`Ht9HEHHPhHEHH@`IHH5H=HEHH@hHt9HEHHPhHEHH@`IHH5H=HEHH@XIHEHH@`Ht9HEHHPhHEHH@`IHH5H=HEHH@hHt9HEHHPhHEHH@`IHH5H=HEHH@XHIſH9HEHH@@HN 0HEHH@@HN(H9Et_N$B N$C\fTf.AEEN$BN$C \ fTdN$B N$C\fTf.AEEt*NBNC \ UfTAH&HEut H HfHnHEHHf.EċEH([A\A]A^A_]UHATSH0HtH5H=HHHHP(H@ HH)HHHHH‰EHHDžDžDžHHHHHHHHHHDeE]ED9=HHDžDžDžHHHMHHHHHH@HHHHRPH9HH HIHH9!Ʌt=HHHJPHHHRHIHHH5H=H9HH HIPH9!Ʌt=HHHJPHHHRHIHHH5H=H9HH HIHH9!Ʌt:HHHHHHHH@PIHH5H=H9HH HIPH9!Ʌt:HHHHHHHH@PIHH5H=HH)HHɋMLcHH IpHcHEHH HI@HEH)HHUHMHHHRHHHHR0I)HHHR`H)HHHRXHHHHRHH)HHLHHHEHEHuHHHHE9tH5H=ED9UU]H0[A\]UHAWAVAUATSHHhtH5H=HhHHHP(H@ HH)HHHHH‰EHhHHHP@H@8HH)HHHHH‰EHhH@p)ȉEHhH@pEHhHUĉPpHhHH@H`HhHH@HXẼLcEȃLcHhHH@HPHhHH@HHEHcEȃHcHhHH@H@HhHH@H8ẼLcЋEȃLcHhHH@H0HhHH@H(ẼLc؋EHcHhHH@H HhHH@HẼLcEȃLcMHhHH@0H!Љt?HhHHP8HhHH@0IHH5H=MHhHH@8H!Љt?HhHHP8HhHH@0IHH5H=MHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5H=MHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5H=MIMIIHhHH@HH!Љt?HhHHPPHhHH@HIHH5H=IHhHH@PH!Љt?HhHHPPHhHH@HIHH5H=IHhHH@HL9!Љt=HhHHPHHhHH@PIHLH5H=IHhHH@PL9!Љt=HhHHPHHhHH@PIHLH5H=IGHHHIHHhHH@0H!Љt?HhHHP8HhHH@0IHH5H=HHhHH@8H!Љt?HhHHP8HhHH@0IHH5H=HHhHH@0H9!Љt=HhHHP0HhHH@8IHHH5H=HHhHH@8H9!Љt=HhHHP0HhHH@8IHHH5H=HFHHHL9t.HFHHHLHH5H=HHhHH@HH!Љt?HhHHPPHhHH@HIHH5H=HHhHH@PH!Љt?HhHHPPHhHH@HIHH5H=HHhHH@HH9!Љt=HhHHPHHhHH@PIHHH5H=HHhHH@PH9!Љt=HhHHPHHhHH@PIHHH5H=HGHHHH9t+HGHHHHH5H=IHhHH@0H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@8H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5H=IHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5H=IBHHHL9t.IBHHHLHH5H=MHhHH@HH!Љt?HhHHPPHhHH@HIHH5H=MHhHH@PH!Љt?HhHHPPHhHH@HIHH5H=MHhHH@HL9!Љt=HhHHPHHhHH@PIHLH5H=MHhHH@PL9!Љt=HhHHPHHhHH@PIHLH5H=MIIH9t'MIIHH5H=IHhHH@0H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@8H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5H=IHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5H=ICHHHL9t.ICHHHLHH5H=HHhHH@HH!Љt?HhHHPPHhHH@HIHH5H=HHhHH@PH!Љt?HhHHPPHhHH@HIHH5H=HHhHH@HH9!Љt=HhHHPHHhHH@PIHHH5H=HHhHH@PH9!Љt=HhHHPHHhHH@PIHHH5H=HCHHHH9t+HCHHHHH5H=IHhHH@0H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@8H!Љt?HhHHP8HhHH@0IHH5H=IHhHH@0L9!Љt=HhHHP0HhHH@8IHLH5H=IHhHH@8L9!Љt=HhHHP0HhHH@8IHLH5H=IEHHHL9t.IEHHHLHH5H=IHhHH@HH!Љt?HhHHPPHhHH@HIHH5H=IHhHH@PH!Љt?HhHHPPHhHH@HIHH5H=IHhHH@HL9!Љt=HhHHPHHhHH@PIHLH5H=IHhHH@PL9!Љt=HhHHPHHhHH@PIHLH5H=IFHHHH9t+IFHHHHH5H=ELcELcEHHEHHEHHII_HEHEHELeID$HIT$HUHEH]HCHHCHHȃ!Ѕt HHHDHHu H=HpHDžxLHhHH@`H9t=HhHHPhHhHH@`IHHH5H=HhHH@hH9t=HhHHPhHhHH@`IHHH5H=HhHH@XHHXHHLHhHH@`H9t=HhHHPhHhHH@`IHHH5H=HhHH@hH9t=HhHHPhHhHH@`IHHH5H=HhHH@XHHHHHHHhHH@`H9t=HhHHPhHhHH@`IHHH5H=HhHH@hH9t=HhHHPhHhHH@`IHHH5H=HhHH@XHH8HHHHhHH@`H9t=HhHHPhHhHH@`IHHH5H=HhHH@hH9t=HhHHPhHhHH@`IHHH5H=HhHH@XHL(IHHhHHR`H9҅t=HhHHJhHhHHR`IHHH5H=HhHHRhH9҅t=HhHHJhHhHHR`IHHH5H=HhHHRXHLIƹH9cHEILHQHhHH@@HLIHQHhHH@@HLIHQHhHH@@HLIHQHhHH@@HN8L9HpJ4HHBLHHH` HBLHHHPXHBLHHH@ XHBLHHH0 Xf(_YHH0HH9]HEHHHJHhHH@@HN 0L9(HHN HpH48H H J HHHpHtHHhHHhHH[A\A]A^A_]UHSHH}HutH5H=HEH;EHEHUH2H0HrHpHrHpHrHpHr Hp Hr(Hp(Hr0Hp0Hr8Hp8Hr@Hp@HrHHpHHrPHpPHrXHpXHr`Hp`HrhHphHRpHPpHEH@HHEHPhHEH@`HH)HHPHEH@XHHHHHDHHu H=HUHBH4HEHPHEH@HHHH HEH@H[]UHATSH0HHHtH5H=HHH@HtHHH@HHHH@HH@@HcHH@HHHHHHHt#H~HHHPHteHfWf.tHHHfHn [f.f. Ѕt[HH@HHDžqDžDžHHHMHHHHMHHHHHHHH@ HHH@0HHUHcHP8HHH@(E̺HHcHt-HHH?HHtHHH@HHHUHcHPPHHHH@EȺHHcHt-HHH?HH9tHHHHHB`HHHBhHHHBXH?H9҅tD:H4HHH9҅tB<HHHH)ËE̅ЋEȅ ЅtHH҅tH=HHHRH}HHDHHu H=HHHHPHHHXHHDžwDžDžHHHMHHHHMHHHHMHHHHMHHHHHHHH@IHHLPHHH@HHHHRPHH Hy`HH HqhH9DHH HIHH9D!ɉɅu!\HH5H=HHHJPHHHRHIHHH5H=H9DHH HIPH9D!ɉɅt=HHHJPHHHRHIHHH5H=H9DHH HIHH9D!ɉɅt:HHHHHHHH@PIHH5H=H9DHH HIPH9D!ɉɅt:HHHHHHHH@PIHH5H=HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5H=H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5H=HH)HHLMHH HI0HɅt?HHHP8HHH@0IHH5H=HH HI8HɅt?HHHP8HHH@0IHH5H=IZHH LQ@HH98HH?HXHL$HH9IMMO HHHHH@IHHLXHHH@HHHHRPHH Hy`HH HqhH9DHH HIHH9D!ɉɅt=HHHJPHHHRHIHHH5H=H9DHH HIPH9D!ɉɅt=HHHJPHHHRHIHHH5H=H9DHH HIHH9D!ɉɅt:HHHHHHHH@PIHH5H=H9DHH HIPH9D!ɉɅt:HHHHHHHH@PIHH5H=HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5H=H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5H=HH)HHLUMHcIHH HI0L9Ʌt=HHHP8HHH@0IHLH5H=HH HI8L9Ʌt=HHHP8HHH@0IHLH5H=K HH LI@HH98HH?HXHL$HH9IMMOHHHHH@IHHLPHHH@0HHHR8HH Hy`HH HqhH9DHH HI0H9D!ɉɅt=HHHJ8HHHR0IHHH5H=H9DHH HI8H9D!ɉɅt=HHHJ8HHHR0IHHH5H=H9DHH HI0H9D!ɉɅt:HHHH0HHH@8IHH5H=H9DHH HI8H9D!ɉɅt:HHHH0HHH@8IHH5H=HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5H=H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5H=HH)HHLMHH HIHHɅt?HHHPPHHH@HIHH5H=HH HIPHɅt?HHHPPHHH@HIHH5H=HH HI@JH92HH HIXHLHH9NO HHHHH@IHHLXHHH@0HHHR8HH Hy`HH HqhH9DHH HI0H9D!ɉɅt=HHHJ8HHHR0IHHH5H=H9DHH HI8H9D!ɉɅt=HHHJ8HHHR0IHHH5H=H9DHH HI0H9D!ɉɅt:HHHH0HHH@8IHH5H=H9DHH HI8H9D!ɉɅt:HHHH0HHH@8IHH5H=HH)HHH9DHH HI`H9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HIhH9D!ɉɅt=HHHPhHHH@`IHHH5H=H9DHH HI`H9D!ɉɅt=HHHP`HHH@hIHHH5H=H9DHH HIhH9D!ɉɅt=HHHP`HHH@hIHHH5H=HH)HHLUЋMHcIHH HIHL9Ʌt=HHHPPHHH@HIHLH5H=HH HIPL9Ʌt=HHHPPHHH@HIHLH5H=HH HI@IJH92HH HIXHLHH9N OHHHHH@HHHHpẼHUȃHcHDHH HI0HD!Ʌt?HHHP8HHH@0IHH5H=HDHH HI8HD!Ʌt?HHHP8HHH@0IHH5H=HDHH HI0H9D!Ʌt=HHHJ0HHHR8IHHH5H=HDHH HI8H9D!Ʌt=HHHJ0HHHR8IHHH5H=HHHHDHH HIHHD!Ʌt?HHHPPHHH@HIHH5H=HDHH HIPHD!Ʌt?HHHPPHHH@HIHH5H=HDHH HIHH9D!Ʌt:HHHHHHHH@PIHH5H=HDHH HIPH9D!Ʌt:HHHHHHHH@PIHH5H=HJHHH HI`HɅt?HHHPhHHH@`IHH5H=HH HIhHɅt?HHHPhHHH@`IHH5H=HH HIXL1H9:HH HI@HNH9NAN HHH0[A\]UHHH}tH5H=HEH@HtHHEH@HuHH5H=HEH@HHEH@UHH H}tH5H=HEHHEH@9EEUHH H}tH5H=HEHHHP(H@ HH)HHHHH‰E)?HEHH@HHEHLPEHcHEHH@HHEHLHEHH@DH}H?H0H@@D!ljt9HEHHP8HEHH@0IHH5H=H@DH}H?H8H@@D!ljt9HEHHP8HEHH@0IHH5H=H@DH}H?H0H9@@D!ljt4HEHHH0HEHH@8IHH5H=H@DH}H?H8H9@@D!ljt4HEHHH0HEHH@8IHH5H=HzAHIHHAELEMM@0IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELEMM@8IAEE!EEt9HEHHP8HEHH@0IHH5H=HAELEMM@0I9AEE!EEt7HUHHJ0HUHHR8IHHH5H=HAELEMM@8I9AEE!EEt7HUHHJ0HUHHR8IHHH5H=L@AMMHI9AEEt.HHHHHHH5H=HEHH@HHt9HEHHPPHEHH@HIHH5H=HEHH@PHt9HEHHPPHEHH@HIHH5H=HEHH@@J<HEHH@HHt9HEHHPPHEHH@HIHH5H=HEHH@PHt9HEHHPPHEHH@HIHH5H=HEHH@@HNH9;L 8B N B\:fTf.AEEu'HH~ I IfInH9_L 8B N B\9fTf.AEEt$L 8BN B \ p9fTHHEHHf.EEUHSH(HtH5H=HHDžDžDžHHHHHHHHHHHHDžDžDžHHHHH@0HHHR8H9HH HI0H9!Ʌt=HHHJ8HHHR0IHHH5H=H9HH HI8H9!Ʌt=HHHJ8HHHR0IHHH5H=H9HH HI0H9!Ʌt:HHHH0HHH@8IHH5H=H9HH HI8H9!Ʌt:HHHH0HHH@8IHH5H=HH)HHHH IXHcHEHEH)HHUHEHHHRHHHHR0HH)HHHH@HH)HHH@@HHHHHEHEHuHHHHH([]UHAWAVAUATSHxH}tH5H=HEHHHP(H@ HH)HHHHH‰EHEH@X)ȉEHEH@XEHEHUȉPXHEHH@IHEHH@HEẼHHUHHRIHUHHRHxUHcHUHHRIHUHLzŨHcHHMH HI0H!Ʌt9HEHHP8HEHH@0IHH5H=HHMH HI8H!Ʌt9HEHHP8HEHH@0IHH5H=HHMH HI0H9!Ʌt7HUHHJ0HUHHR8IHHH5H=HHMH HI8H9!Ʌt7HUHHJ0HUHHR8IHHH5H=HHIH@DH}H?H0H@@D!ljt9HEHHP8HEHH@0IHH5H=H@DH}H?H8H@@D!ljt9HEHHP8HEHH@0IHH5H=H@DH}H?H0H9@@D!ljt7HEHHP0HEHH@8IHHH5H=H@DH}H?H8H9@@D!ljt7HEHHP0HEHH@8IHHH5H=H~AHIHH9@@t+HFHHHHH5H=H@@HuH6Hv0H@@!t9HEHHP8HEHH@0IHH5H=H@@HuH6Hv8H@@!t9HEHHP8HEHH@0IHH5H=H@@HuH6Hv0H9@@!t4HEHHH0HEHH@8IHH5H=H@@HuH6Hv8H9@@!t4HEHHH0HEHH@8IHH5H=HrHHHH9@@t+HBHHHHH5H=UHcHpUHcHhUHcH`HXHEHEHEH]HCHHStHHHDHHu H=HEHEHpHUHHRHH9҅t7HUHHJPHUHHRHIHHH5H=HUHHRPH9҅t7HUHHJPHUHHRHIHHH5H=HUHHR@HLEIHhHUHHRHH9҅t7HUHHJPHUHHRHIHHH5H=HUHHRPH9҅t7HUHHJPHUHHRHIHHH5H=HUHHR@HHxHH`HUHHRHH9҅t7HUHHJPHUHHRHIHHH5H=HUHHRPH9҅t7HUHHJPHUHHRHIHHH5H=HUHHR@HJ48H9>HUHHLA HHHADXf(v,YH뽸H9HPH 2HUHIHHEHtHHEHHUHHx[A\A]A^A_]UHSHH}HutH5H=HEH;EHEHUH2H0HrHpHrHpHrHpHr Hp Hr(Hp(Hr0Hp0Hr8Hp8Hr@Hp@HrHHpHHrPHpPHRXHPXHEH@HHEHPPHEH@HHH)HHPHEH@@HHHHHDHHu H=HUHBH4HEHPHEH@HHHH HEH@H[]UHSH(HHHtH5H=HHH@HtHHH@HHHH@HH@@HcHH@HHHHHHHt#H~HHHPHteHfWf.tHHHfHn U)f.f. Ѕt3)HH@HHDžpDžDžHHHMHHHHHHHH@ HHH@0HHUHcHP8HHH@(EܺHHcHt-HHH?HHtHHHHBHHHHBPHHHB@H?H9҅t<2H HHH9҅tHHӋE܅tHH҅tH=HHHRH-HHDHHu H=HHHHPHHHXHHDžvDžDžHHHMHHHHMHHHHHHHH@HHHL@HHHPHHHH@PH9@@HH6HvHH9@@!u!YHH5H=HHHHPHHH@HIHH5H=H9@@HH6HvPH9@@!t:HHHHPHHH@HIHH5H=H9@@HH6HvHH9@@!t=HHHJHHHHRPIHHH5H=H9@@HH6HvPH9@@!t=HHHJHHHHRPIHHH5H=HH)HHHuHH?H0H@@t?HHHP8HHH@0IHH5H=HH?H8H@@t?HHHP8HHH@0IHH5H=MHHH?LG@H9HILH4HHHH@HHHLHHHHPHHHH@PH9@@HH6HvHH9@@!t:HHHHPHHH@HIHH5H=H9@@HH6HvPH9@@!t:HHHHPHHH@HIHH5H=H9@@HH6HvHH9@@!t=HHHJHHHHRPIHHH5H=H9@@HH6HvPH9@@!t=HHHJHHHHRPIHHH5H=HH)HHH}uHcLMM@0I9AEEt=HHHP8HHH@0IHHH5H=LMM@8I9AEEt=HHHP8HHH@0IHHH5H=IHH6LF@H9HILH-4u- -u X-$---v-tsvhr<j-`qY -q -p f-\pU - q-q a-WqP -q -q -p -p `-VpO -p Sr-onrmm-lkmujc-S-IiB;j-hgjft-jdce-d e-d S-IdB -d -ydr -d -d A-7d0 -d -c9-c9$-c-cV-LcE-c{-qcj - c -c L-Bc; E-;b47-b7-ubn-b-bJ-@b9-b r-hba -b -b -a5?-5a.5ͽ-ýaf-\aU-a-a$-a -a \-RaK -a -۹`Թ3-`z3-`-`Q-G`@-`ٷv-l`e -` -` G-=`6  -_0h-Y->-#----/-W-M.P-A-&- -ױ4--f-^]fh\T-#-%-!\-[ Z\ЮY--TXO-ET>Xԫ-ʫWëX|-rWkX-VX-VX -UXȩ-UXJ-@T9X-TX-%t--Tj-`TY -T -T 5-+T$ ̥-¥T-wTp -T -T L-BT; -٣Wң-W 5-+W$ Ϣ-ŢW f-\WU -W-W L-BW; -ܠWՠ }-sWl - Vԟ-ʟVß o-eV^  -V -V ;-1V*-Vߝ -Vy $-V -V R-HUA -U -U >-4U- ՚-˚UĚ l-bU[!-U -U U-KUD -Uۘ p-fT_  -T -T ;-1T* Ö-T ^-TTM -T -T aY[-QSJR=Y Q-ܒPՒ--̑-‘O j-`OY -O -O "--ӏ--|-H Q-NMQLW"F-<K5-K-JC-9J2-K-K A-7K0 ߊ-ՊKΊ z-pKi - KƉ-K `-VKO -K -K - J -J O-EJ> -ކJ׆ p-fJ_ -J -J G-=J6 L-IHLуGG-FEGjDX-H->C70 D-BAD@<-2>+?܁-ҁ>ˁ?w-m>f->-><-2>+-> e-[>T -~>~ ~-~>~ #~-~>~ }-}>} S}-I}>B} |-|>| {-{<{=x{-n{<g{={-z<zz-z<z/z-%z<zy-y<yKy-Ay<:y x-x<x }x-sx<lx x- x<x w-w<w >w-4w<-w v-v<v sv-iv<bv &u-u:u;t-t:t;`t-Vt:Ots-s:ss-s:|s"s-s:sr-r:r Hr->r:7r q-q:q ~q-tq:mq  q-q:p p-p:p Hp->p:7p o-o:o n-n8n9> >->}> >-> > =-== B=-8=1=<-<< z<-p<i< <-;; ;-;; .;-$;$;:-:$:[:-Q:$J:9-9$9|9-r9$k99-9$88-8$8 D8-:8$38 7-7$7 e7-[7$T7 6-6$66-6$6 06-&6$6 5-5$5 Q5-G5$@5 4-4#44-4#444-*4##43-3#3h3-^3#W33-2#22-2#2 52-+2#$2 1-1#1 V1-L1#E1 0-0#00-0#0 !0-0#0 /-/#/ B/-8/#1/ .-."..-x."q..-." .---"-M--C-"<-,-,",,-,", 3,-),"", +-+"+ d+-Z+"S+ *-*"**-*"* K*-A*":* )-)") |)-r)"k) )- )!)(-(!(Z(-P(!I('-'!''-'!z'"'-'!'&-&!& z&-p&!i& &- &!& %-%!% F%-<%!5%$-$!$ $-$!$ 2$-($!!$ #-#!# `#-V# O# #-# ""-" "A"-7" 0"!-! !o!-e! ^!$!-! !  -  X -N G -  -| u>-4 - -  r-h a  -  u-kd--$-- +-! - L-B; - U-KD - w-mf ( -(-I-?8!----1-' -K-0----l-8-sn -  Y -O H  -   -  F -< 5  -   -  D -: 3  -   -z s 9 -/ (  -   -u n  -  -t-jc -  - Z-PI - - y--# - Z-P I -  -  @-6 / -  p-f _ -   -  =7-- & --o-e^W2,-"xph`XPH 0^0^^^P^P^^^p^p0^0^^x^x8^8^^^P^P^^^X^X ^ jnrv zH~tpp@p(pl* 8`h27<8A`FKPUZ"_@did`0p@hXHp8`\#(X>@CHT^chm8rP`LX HxD  0 X  $ ) .  3 H8 @N S X ] <s (y h 8      4 H      0     @  h    ,  % 0 + (A X G  M  S  Y  _ 8 e ` k $         `   @l ! expression constants ! expression types ! expression data ! expression library ! ********************************************************************** ! expression ! ---------------------------------------------------------------------- module expression ! ---------------------------------------------------------------------- ! expression uses modules ! ! ---------------------------------------------------------------------- ! no implicit typing: require explicit declarations implicit none ! ---------------------------------------------------------------------- ! all names are private: require explicit exports private ! ---------------------------------------------------------------------- ! expression RCS strings ! ---------------------------------------------------------------------- ! module source filename supplied by RCS character( len= *), public, parameter :: expression_rcs_id = & '$Id$' ! ---------------------------------------------------------------------- ! expression constants ! ---------------------------------------------------------------------- integer, parameter :: no_op = 0 integer, parameter :: add_op = 1 integer, parameter :: sub_op = 2 integer, parameter :: mul_op = 3 integer, parameter :: div_op = 4 integer, parameter :: pow_op = 5 integer, parameter :: mod_op = 6 ! ---------------------------------------------------------------------- ! expression types ! ---------------------------------------------------------------------- ! an operator has two operands type, abstract, public :: expression_t integer :: op_code = no_op end type expression_t ! an integer expression type, extends( expression_t), public :: integer_expression_t type( integer_expression_t), pointer :: left => null() type( integer_expression_t), pointer :: right => null() integer :: value end type integer_expression_t ! ---------------------------------------------------------------------- ! expression data ! ---------------------------------------------------------------------- ! ---------------------------------------------------------------------- ! expression library ! ---------------------------------------------------------------------- public :: operator( +) interface operator( +) module procedure exp_add end interface operator( +) public :: operator( -) interface operator( -) module procedure exp_sub end interface operator( -) public :: operator( *) interface operator( *) module procedure exp_mul end interface operator( *) public :: operator( /) interface operator( /) module procedure exp_div end interface operator( /) public :: operator( **) interface operator( **) module procedure exp_pow end interface operator( **) public :: operator( .mod.) interface operator( .mod.) module procedure exp_mod end interface operator( .mod.) public :: evaluate ! ---------------------------------------------------------------------- ! module procedures ! ---------------------------------------------------------------------- contains ! ---------------------------------------------------------------------- ! evaluate an expression recursive subroutine evaluate( expression) type( integer_expression_t), intent( in out) :: expression continue if( associated( expression% left)) call evaluate( expression% left) if( associated( expression% right)) call evaluate( expression% right) select case( expression% op_code) case( no_op) continue case( add_op) expression% value = expression% left% value + expression% right% value case( sub_op) expression% value = expression% left% value - expression% right% value case( mul_op) expression% value = expression% left% value * expression% right% value case( div_op) expression% value = expression% left% value / expression% right% value case( pow_op) expression% value = expression% left% value ** expression% right% value case( mod_op) expression% value = mod( expression% left% value, expression% right% value) case default stop 'invalid op code' end select return end subroutine evaluate ! ---------------------------------------------------------------------- function exp_add( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = add_op return end function exp_add ! ---------------------------------------------------------------------- function exp_sub( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = sub_op return end function exp_sub ! ---------------------------------------------------------------------- function exp_mul( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = mul_op return end function exp_mul ! ---------------------------------------------------------------------- function exp_div( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = div_op return end function exp_div ! ---------------------------------------------------------------------- function exp_pow( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = pow_op return end function exp_pow ! ---------------------------------------------------------------------- function exp_mod( left, right) result( e) type( integer_expression_t), pointer :: e type( integer_expression_t), intent( in), target :: left type( integer_expression_t), intent( in), target :: right continue allocate( e) e% left => left e% right => right e% op_code = mod_op return end function exp_mod ! ---------------------------------------------------------------------- ! expression ! $Id$ ! ********************************************************************** ! eof end module expression Day-II/02-Expression/expression.mod100777 0 0 4316 11777426600 12505 0VH 0 0 3 0 0 0 MODULE EXPRESSION,2 0 0 FILE 0,expression.f90 TYPE EXPRESSION_T,1,1104,4 OP_CODE(0): 1,3,3,0,0,0,1,0,0,0 = 0 ENDTYPE TYPE INTEGER_EXPRESSION_T,1,80,32 (EXPRESSION_T) LEFT(8): 7,INTEGER_EXPRESSION_T,b,0,0,20,1,0,0,0 = NULL RIGHT(16): 7,INTEGER_EXPRESSION_T,b,0,0,20,1,0,0,0 = NULL VALUE(24): 1,3,3,0,0,0,1,0,0,0 ENDTYPE PARAMETER EXPRESSION_RCS_ID: 3,1,a,4,0,4001,1,0,0,0 = $Id$ GMODPROC +: EXP_ADD GMODPROC -: EXP_SUB GMODPROC *: EXP_MUL GMODPROC /: EXP_DIV GMODPROC **: EXP_POW GMODPROC .MOD.: EXP_MOD PROC NULL,0,6,161,17,0: 0,0,0,118,0,20000,2,0,0,0 ENDPROC PROC EXP_ADD,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_ADD: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EXP_SUB,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_SUB: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EXP_MUL,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_MUL: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EXP_DIV,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_DIV: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EXP_POW,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_POW: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EXP_MOD,2,8,0,17,0: 7,INTEGER_EXPRESSION_T,b,0,0,400a1,2,0,40001,0 RESULTVAR E,4,,EXP_MOD: 7,INTEGER_EXPRESSION_T,b,0,0,a1,0,0,1,0 VAR LEFT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 VAR RIGHT,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,1003,0,0,0,1 ENDPROC PROC EVALUATE,1,8,0,17,0: 8,0,0,0,0,60800,1,400000,0,0 VAR EXPRESSION,3,,: 7,INTEGER_EXPRESSION_T,b,0,0,183,0,0,0,3 ENDPROC END Day-II/02-Expression/expression.o100777 0 0 63534 11777426600 12213 0@  L`L__text__TEXTG`hN__data__DATAH0`J0^ __cstring__TEXT0I9K__bss__DATAL__eh_frame__TEXTpJL^ h_>bl P##5 UHHH}Hut4Hj!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4HjlH5@0@}HHuHMEHEȋ@t4HjpH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H jH5 }HHuHUMAHEf@ft`HEf@H jsH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnHjSH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnHjYH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fHjH=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnHj[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnHjSH5H=AE0HHHHHDIDAHEH@H@f@fftnHjYH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fHjH=A E0HHlj֋HHDADAHEH@H@f@ff tnHj[H5H=AE0HHHHHDIDAH HrH5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH tH5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH uH5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH wH5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHHH}Hut4HU!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4HUlH5@0@}HHuHMEHEȋ@t4HUpH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H UH5 }HHuHUMAHEf@ft`HEf@H UsH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnHUSH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnHUYH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fHUH=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnHU[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnHUSH5H=AE0HHHHHDIDAHEH@H@f@fftnHUYH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fHUH=A E0HHlj֋HHDADAHEH@H@f@ff tnHU[H5H=AE0HHHHHDIDAH H]H5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH _H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH `H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH bH5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHHH}Hut4H@!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4H@lH5@0@}HHuHMEHEȋ@t4H@pH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H @H5 }HHuHUMAHEf@ft`HEf@H @sH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnH@SH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnH@YH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fH@H=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH@[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnH@SH5H=AE0HHHHHDIDAHEH@H@f@fftnH@YH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fH@H=A E0HHlj֋HHDADAHEH@H@f@ff tnH@[H5H=AE0HHHHHDIDAH HHH5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH JH5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH KH5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH MH5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHHH}Hut4H+!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4H+lH5@0@}HHuHMEHEȋ@t4H+pH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H +H5 }HHuHUMAHEf@ft`HEf@H +sH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnH+SH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnH+YH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fH+H=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH+[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnH+SH5H=AE0HHHHHDIDAHEH@H@f@fftnH+YH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fH+H=A E0HHlj֋HHDADAHEH@H@f@ff tnH+[H5H=AE0HHHHHDIDAH H3H5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH 5H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH 6H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH 8H5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHHH}Hut4H!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4HlH5@0@}HHuHMEHEȋ@t4HpH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H H5 }HHuHUMAHEf@ft`HEf@H sH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnHSH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnHYH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fHH=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnHSH5H=AE0HHHHHDIDAHEH@H@f@fftnHYH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fHH=A E0HHlj֋HHDADAHEH@H@f@ff tnH[H5H=AE0HHHHHDIDAH HH5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH !H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH #H5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHHH}Hut4H!H5@0@}HHuHMEHHHt)HHHH H9uHHHEHEHEHPHEȋ@$<t4HlH5@0@}HHuHMEHEȋ@t4HpH5@0@}HHuHMEHEȋ@ $< tCHEȋ@ H H5 }HHuHUMAHEf@ft`HEf@H sH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnHSH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnHYH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fHH=A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH[H5H=AE0H HHHH DIDAHEHXHEH@H@f@ff tnHSH5H=AE0HHHHHDIDAHEH@H@f@fftnHYH5H=AE0HHHHHDIDAHEH@H@f@f f $< HEH@H@f@f f fHH=A E0HHlj֋HHDADAHEH@H@f@ff tnH[H5H=AE0HHHHHDIDAH H H5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH H5|HHpHHpD|HEHEHHEHEHEHEHEHĐ]UHH`H}HHHt)HHHH H9uHHHEHEHEHHE@$<u4HnH5@0@}HHuЉHMЊEHE@t4HpH5@0@}HHuHMEHE@ t@HE@ H H51}HHuHUMAHE@$<u4HoH5@0@}HHuHMEHEf@ftNHEf@H sH=AE0H}Hωu֋UHMDMAEHEHHEH@Hf@ff tbHSH5H=AE0H}HHuHMHED|I|D{A{HEH@Hf@fftnHYH5H=AE0HpHHhHhHpDdIdDcAcHEH@Hf@fftnHeH5H=AE0HXHHPHPHXDLILDKAKHEH@Hf@f f $< HEH@Hf@f f fHH=A E0H@Hlj<֋6->>><-X>G>==:==6-o==6-<<<<:=<6-F<;6-;;~;<-/;(;;:<-::C:<-9999<-e9^9M9%9<-8888<-o8^8>8<-"887;-777<-7y7a7<-E7476:=6:=6:=67-6|66-O6C665-56-5555-V56-)5545-49-4l4<-4443<-3u3.3<-2222<-O2H2722<-111}1<-!110<-|0u0d0<0<-////<-Z/I/)/;- /..<-...<-r.a.(.:=.:=-:=--<----|-7-l-\-6-/-#-,5-,6-,,h,5-6,6- ,++5-+9-l+L+<-****<-f*U**<-)))~)<-/)())(<-(((](<-(''<-\'U'D''<-&&&w&<-:&)& &;-%%%<-%%n%<-R%A%%:=$:=$:=$$<-$$$\$7-L$ <$6-$$#5-#6-|#p#H#5-#6-"""5-l"9-L","<-!!!!<-F!5! <-   ^ <-  <-wp_=<-<-<5$<-W<- ;-<-wfN<-2!:=:=:= <-u <7-, 6-5-6-\P(5-6-5-L9-, <- <-&<-x g><- <-WP ?<-k<- <- u7<- ;- s<-W F.<- :=:=:= <-r aU 7- 6-5-i6-<05-6-u5-,9- <-b<-<-_XG<-    <-7 0   <-  K <-    <-m f U  <-   ;- } S <-7 &  <-   := := :=t n <-R A 5 7-6-{5-I6-5-6-}U5- 9-<-}veB<-<-?8'<-f<-<-p+<-<-MF5<-;-i]3<-<-:=o:=_:=TN<-2! !''  %x`#p&^p%@(^@'*^)4^30^/,^+P2^P1 .^ -LRIaItI|III  LI!I)L5I>IGLSI\IeLqIzILIJJ$J-J8JIHJYJ0I=IH&H?HbpJH`HmpGK16K-jxK@JJ`6K J$PHKqIW(:Y_expression_MP_exp_mod___NAGf90_rterr___NAGf90_procref___NAGf90_pu_bad_cdtype_line___NAGf90_line_Allocate_s___NAGf90_associate_pointer___NAGf90_badptr3_line___NAGf90_destroy_pointer_expression_MP_exp_pow_expression_MP_exp_div_expression_MP_exp_mul_expression_MP_exp_sub_expression_MP_exp_add_expression_MP_evaluate___NAGf90_ipowi___NAGf90_stop_line_expression_MP__integer_expression_tinitialise_expression_DT_expression_tHEADER_expression_DT_integer_expression_tHEADER_expression_MP_exp_mod.eh_expression_MP_exp_pow.eh_expression_MP_exp_div.eh_expression_MP_exp_mul.eh_expression_MP_exp_sub.eh_expression_MP_exp_add.eh_expression_MP_evaluate.eh_expression_MP__integer_expression_tinitialise.eh__ftf_.5817L_.str2L_.str3L_.str4L_.str5L_.str6L_.str7__ftf_.5943L_.str8L_.str9__ftf_.6069L_.str10L_.str11__ftf_.6195L_.str12L_.str13__ftf_.6321L_.str14L_.str15__ftf_.6447L_.str16L_.str17L_.str18L_.str19L_.str20L_.str21___NAGf90_Check_Procref.6574L_.str22L_.str23L_.strL_.str1___NAGf90_Check_Procref_Args0.6572___NAGf90_Check_Arg.6571___NAGf90_Check_Procref_Args1.6573EH_frame0Day-II/02-Expression/te100777 0 0 223044 11777426606 10207 0 H__PAGEZEROx__TEXT__text__TEXT R __stubs__TEXT__stub_helper__TEXT __cstring__TEXT__const__TEXT@__unwind_info__TEXT__eh_frame__TEXT``x__DATA __program_vars__DATA(__got__DATA(8(__nl_symbol_ptr__DATA`` __la_symbol_ptr__DATApp"__data__DATA@@__bss__DATA`__common__DATA  H__LINKEDIT0$&"0((@H P""7Y; /usr/lib/dyldhFu7F gem$ *  @/usr/local/lib/NAG_Fortran/libf53.dylib 8/usr/lib/libSystem.B.dylib&HjHHH}HuHHHH9uHLUH1]FUH]$UH]UH]UHAVAUATSID.HOD9SĉADEH5 D9DiF$0AAIcHLLNHHLL@H@HFIPIQIHIIIpIqEEEL$AEAAtEIcHLL^McIMMAIAHFIPISIHIKMHMKEEEL$IcHLLnMcIMM\$ID$HFISIUIKIMMcMeAAMcIMMl$McIMIKICID$HqIuHQIULYM]AAAMcIMM\$IcHLHJHBID$HqIsLiMkHQISA@EaIcHLLfHHLHHH@HFLiMl$LYM\$HQIT$A@AqLcIMIuHHLHHH@IELYL^LaLfHQHVA@EiMcIMMkHHLHHH@ICLaMeHqIuHQIUAAAENIcHAHMBNIRHHBHuHLZM\ AAE)ANAAHHHL@L`MbIXIZMXMZ MhMj(AIr E9tvt8AAHHHHPHXH^LZL^LjLn HJHN(AIr@CHHHHHLXL^LiLnHQHV LaLf(AH CHHHL`LhLnIT$HVIL$HN I\$H^(AH E9CHHHHXHPHVHKHNLcLf L[L^(L^ CDHHHL`LhMkIT$ISIL$IK I\$I[(L^@CDHHHL`LhMkIT$ISIL$IK I\$I[(L^`CDHHHL`LhMkIT$ISIL$IK I\$I[(AHE9IcHHH ;IJD)7E2[A\A]A^]AuĉHcLaIIRIQHs LLHEHt4DEHN(H96H1AAGHNHH I9(tdtOt:t%t@HJHH I9~THJHH I9~DHJHH I9~4HJHH I9~$HJHH I9~HJHH I9HcIIK43HFHEI9"LHFHM)d(xHNHHr`I9~xHNHHI9~xHNHHI9~xHNHHI9~xHNHHI9lxHNHHI9UGD9t2HJHHr I9:HNHHr@I9Z!H?HELL II|$HuMcIM|$O|Mf MfE14UOA9AAG ALfHcHN3IKMkLnHQIT$LAMD$LyM|$DGE9EAt|At2IcHLHrLzM{LfLaHFHALVLQDGE`McIMIzIcHLHHHpIrLYL_HYH_LiLoAApHcHLL{McIMIzMZL[HOIOLoMoHWIWAE9A@HHLLxMcIMMbMjLhIL$IOI|$IIT$IWEXIcHLLZHrIrICID$I[I\$MkMl$AHLcIMMeI}HzM|$M{It$IsMT$MSA@HHLLxHXI]II|$IWIT$IGID$AE9AAA;DL}EE11qUHAWAVAUATSHIIHUIHYH9cL;qYHE1GAHQ L9q0&t|tbtHt.tAHZ0HQ@L9ALB0H M9AHr0H L9AHJ0H L9ALZ0H M9ALJ0H M9AMA9t|HB L9r0wrDiHP L9p0wdDiHp@L9r0wVDiHP`L9v0wHDiHL9r0w7DiHL9v0w&DiHL9r0wDiHL9v0yIcHJ E1HHULLSE$AxE9DD‰׃ApMcIMIKLcIO!MJMBMCIQHQIAHAMALAAHt5AxLcIMIsISIRHFIAHNIILVMQAEHIcHLLBMcIMMSICHBIJIHIrIpIzIxEMcIOt<ILuOt<(H[A\A]A^A_]EPIcHLLVHFIAMJLOMZL_IJHOAxLcIMI{ICHFHWIRHwIrLOMJEHIcHLLPHPISIJHOIrHwMBLGEApIcHLHJHcHN 'IyMQLRHGHAL_LYLWLQD9ѨHLL@LLPLLX HHx(HHA0HHQ8HHq@LLIHLLAPLLQXLLY`HHyhHHApHHQxHHLLLLTLL\HH| HHT(L^ IID MML MMD MMT (LF@II|IITIID MML(HF`LLTLL\HH| HHT(HLLLLLDLLT LL\(LIID IIT MML MMD (LMM\ II| IID IIT (HH_<<H{VLLA;IcLNIK !A$K!HHBHuLjHHMl M9s&HHULL_H[A\A]A^A_]H^HJ #HULL0MAML$0M9L$AM\$PM9\$8AID$@HP0H9PAPAHXPH9X8AHppH9pXDBLL9PxDBHH9~DBLL9fDBLL9NDBHH96DBH0H9DBH Ax*19A HQH9 E1ҍGAHQ0H H9Ft|tbtHt.tAHQ0H H9AHQ0H I9AHQ0H I9AHQ0H I9AHQ0H I9AHQ0H I9ArA9HQ0HA I9DVHP0HH I9vvDVHQ0HH@I9veDVHQ0HH`I9vTDVHQ0HI9v@DVHQ0HI9v,DVHQ0HI9vDVHQ0HI9YI99E(xND9EAEDƃqEKIcHLLiMcIK LCL[LYI@IEIxI}IPIUE9qE˃t5AsHcHLLHHxH{IQIPMiMhIYIXAECMcIMM]IcHLHOHWIULIMKHYI[HqIsEASLcIMIuIEI@LFLGLNLOHNHOA[LcIMIYIyI}HCHFLCLFH{H~ECIcHLLZLjMiIKHKIsHsICHCEEKIcHLLjIcHN'IxI@HBH_I]HwIuHOIME9McIO#MrMzIL}O|(A$H[A\A]A^A_]HAArHcHHLL@M9M9HHL9L1EXAwZMcEAALHJ&IcHHJ4'H~HFH9CAMcLHLHKHVHSHGHAHWHQH_HYAAxELHN&IcHHJ4#H~HVI9RaAMcLHLLSHSHGIBHWIRHOIJAAxcAMcLHLHHHVHPH_HYLWLQHwHqAXALHN&HcHHJ4'H~HVI9RAMcMIMMBHVIRHGI@HOIHLWMPDCAxLHN!IcHHJ4'H~HFI9B+LHHID (ID(H^IZE$AE$A<-AvvD)ǃEKEPIcHLHsIcHLHJHBHCHQHVHAHFHYH^AwtDEKEPIcHLL[IcHLLBHBHCIHIKIpIsIxI{AAIcHLL[IcHLLBHBHCIHIKIpIsIxI{AAIcHLL[IcHLLBHBHCIHIKIpIsIxI{Aw AQABHcHLL[HHLL@H@HCIHIKIpIsIxI{AQABHcHLL[HHLL@H@HCIHIKIpIsIxI{AQABHcHLL[HHLL@H@HCIHIKIpIsIxI{AALHHID (ID(HNIJA<$A<$<>A<$AM;|$ E1DGDƒAIu0I I9t|tbtHt.tAI]0I I9AIM0I I9AMM0I M9AME0I M9AIE0I I9uAIU0I I9`ARA9!IE M;}0CDRHp L;x01DRHH@L;~0DRHp`L;y0 DRHL;~0DRHL;y0DRHL;~0DRLL;y0YHL]M\(LxE1E1eLHHID (ID(HNIJA<$A<$<LHHID (ID(HNHKA<$A<$<E1E1LL1?<UHAVAUATSIH "H\1HHHHHIUHt1HJILB L9wYHJILJ I9EHHuHHw HGIMHOIEHtHxI}I}IUHt HOH9Jv0HI}IEH==H4LMU[A\A]A^]HHHtH;HwHH:IEH=~HIEIMHYHLqLa HtxHqHsHAHtaHPIUH9tKHuHHH9uL L LL螘tuIEL)IEH[HH= KLMEIUHQIUHQL7I9LJ M I9I9HzHr MvMf IFI]I^IEHtLpMuI}IUHt INH9JvIMuHHHtH;HwIL2I}KH=1{JHB H HCL;A9HA HB HQHtGHyHzHAHtPHPIUH9t7HuHHH9uL1L2Mu8LYM]HQL"MeIUUHAWAVAUATSHIIIH HH7HEHH8tH[A\A]A^A_]þ贖II$HX蚖HLLPLLHLL@ HHx(HHp0HHP8HHA@LLYHLLQPLLIXLLA`HHyhHHqpHHQxHHLLLLLLLDHH| HHT(LF IIDMM\MMT MML(LV@II| IIT IID MM\ (HF`LLLLLDHH| HHT(HLL\LLTLLL LLD(LIIT IID MM\ MMT (LMMD II| IIT IID (HH_<<H{HHQ;IO HHAHuHYI_AM<$LLHuLH[A\A]A^A_]0迓I$M$IBM $MiI<$OD5LGI4$Lv(I $HA H[A\A]A^A_]HAQUHAWAVAUATSH(H}LwM MnM&I}HrA]~LE1H{ AH E9eEE~WMEMo I}HJ rEUE~LE1H{ ZAH E9eEI DeE9&HUD*EHUEHL{ MoMI}HE]E~LE1H{ AH E9eEE~WMEMn I}H0EeE~LE1H{ AH E9eEI DmE9/EHE D}L]E9;EH]5EeAw-IUI;U0S-LAAD$ƃAAIU8I}PH H9t_t=tAAHQ8HqPH H9kAESHQ8LAPH L9NAESHQ8HAPH H91AESHQ8LIPH L9AESHQ8LyPH L9AESHQ8HYPH H9ACAD9|ESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDD7H9*AIcHHLH^HN<)IOIWHVLALCLILKHAHCAE9.HIT=IcHHIt=AIcIIMIXHN<)IwMOMHHNHKHVHSHFHCA[AA9HHcHHN(MHM9L=(AIcIIMM_IPMOLJMKHBICLBMCD[HIT5IcHHItH94IcIIHM| (O| (HHL KLIL5AUAU<0A\$D9 EAA<EBEKMcIMM|$IcHLHJHBID$HqIwHQIWLaMgD9tDEBEKIcHLLVIcHLHxL`LfHOIJLMzL_MZAAIcHLLQMcIMM\$It$HqM{MzI{IzISIRAAMcIMMWIcHLL^HNIOI{IzISIRICIBD9AHAAHcHLHwHHLLPLxLIRHVMZL^MbLfAHAAHcHLHwHHLLPLxLIRHVMZL^MbLfAHAAHcHLLgHHLLXLxLISIT$ICID$MSMT$AAEeAuIUI;U0{LAET$DփAAIU8MEPH L9t_t=tAAHQ8HqPH H9kAESHQ8LIPH L9NAESHQ8HyPH H91AESHQ8HAPH H9AESHQ8HYPH H9AESHQ8LAPH L9ACAD9ESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDD7H9AIcHHLLFHJ)HKHCHFHQIPLIMHHYIXAE90HIT=IcHHIt=AIcIIMMHHJ4)HNHFI@HQIQHYIYHqIqA[AA9HLcLHN(MHM9L=AIcHHLLXIPLHHzI{LJMKLBMCD[HIT5IcHHItH94IcIIHID (KD(HHH I\I\5EMAEMA<.A\$D9IDD AEBA{IcHLLbHcHLHNHFHBHqIt$HAID$HQIT$9EAAtDEBA{IcHLLZHcHLLNHFHBIIIKMaMcMQMSAIcHLLZHcHLLNHFHBIIIKMaMcMQMSAIcHLLZHcHLLNHFHBIIIKMaMcMQMS9ApGHcHLLZHHLLHH@HBIIIKMaMcMQMSApGHcHLLZHHLLHH@HBIIIKMaMcMQMSApGHcHLLZHHLLHH@HBIIIKMaMcMQMSAIcHHID(ID=(IIIPKT AMAM<5IcHHHID (ID5(HHH MLMLEEAEEA<PEeA<IUI;U0LAA|$AAIU8MMPH L9t_t=tAAHQ8HqPH H9kAESHQ8LAPH L9NAESHQ8HAPH H91AESHQ8HyPH H9AESHQ8HYPH H9AESHQ8LIPH L9ACAD9ESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDD7H9~AIcHHLH^HN)IHI@HFHQHSLILKLALCAE9.HIT=IcHHIt=AIcIIMIYHJ4)HNHFIALALCHQHSHqHsA[AA9HHcHHN(MHM9L=AIcHHLLYIPLIHzI{HBICLBMCD[HIT5IcHHItH94IcIIHID (KD (HHL KTIT5A]A]<0A\$D92DD AEBA{IcHLLbHcHLHHHpHrHAID$HqIt$HQIT$9EAAtDEBA{IcHLLRHcHLLHHpHrIIIJMaMbMYMZAIcHLLRHcHLLHHpHrIIIJMaMbMYMZAIcHLLRHcHLLHHpHrIIIJMaMbMYMZ9EPGIcHLL^HHLL`H@HFIT$ISIL$IKML$MKEPGIcHLL^HHLL`H@HFIT$ISIL$IKML$MKEPGIcHLLRHHLLHHpHrIIIJMaMbMYMZAIcHHML(ML=(HHI@IDEMAEMA</EeAYIUI;U05LAEL$D΃AAIU8I}PH H9t_t=tAAHQ8HqPH H9kAESHQ8LAPH L9NAESHQ8HAPH H91AESHQ8LIPH L9AESHQ8LqPH L9AESHQ8HYPH H9ACAD9ESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDD7H9& AIcHHLHZHN4)INMNLJHqHsLALCHAHCAE9.HIT=IcHHIt=AIcHHLLJHN)IpMpLrHNIIH^IYHFIAA[AA9HHcHHN(MHM9L=AIcIIMM^IPMNLJMKHBICLBMCD[HIT5IcHHItH94IcIIHMD (OD5(HHH ILILAuAu<0A\$D9DD AEBA{McIMMt$HcHLHJHBID$HqIvHQIVLaMf9AEAAtDEBA{IcHLLVHcHLLHL`LfIIIJMqMrMYMZAIcHLLQLcIMM\$It$HqMsMrMKMJISIRAMcIMMVHcHLL^HNINMKMJISIRICIB9TAHGLcIMIqHHLLPLpMqIRHVMZL^MbLfAHGLcIMIqHHLLPLpMqIRHVMZL^MbLfAHGLcIMMaHHLLXLpMqISIT$ICID$MSMT$AIcIII|(K|5(HHMHMLAEAE<3H([A\A]A^A_]E'AkIWI;W0GLAA|$AAIW8MOPH L9t_t=tAAHQ8HqPH H9kAESHQ8LiPH L9NAESHQ8HyPH H91AESHQ8LAPH L9AESHQ8LqPH L9AESHQ8HAPH H9ACAD9WESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDD7H9AIcIIMMqHJ49HNLnMiHYI^LAMFHAIFAE9.HIT?IcHHIt?AIcHHLHsHJ9LrHJHKMNLNIFHFMnLnA[AA9HHcHHN8MHM9L?AIcHHLLXIPLHHJIKLrMsLBMCD[HIT7IcHHItH94IcHHHMD(MD(IIH ILKLE7AE7A<0A\$D9DD AEBA{McIMMnLcIMIL$ID$IFHqIuHQIULaMe9EAAtDEBA{IcHLLRLcIMMNIvHrIIIJMiMjMYMZAMcIMMeHcHLLRHJIMMJML$MZM\$IBID$AMcIMIsLcIMMeMMMKMT$LVID$HFMt$Lv9E`GIcHLLYHHLLhLpLqIUISIuIsMMMKEPGMcIMMNHHLHpL`MfHNIIHVIQLnMiEXGMcIMIrHHLHHH@IBLaLfLqLvHQHVAIcIIMl(Ol(HHI@IDE7AE7A<2rE1A HAE1ҹ`IcIIHMt (Ot (IIH ItKtA]A]< IcHHHID (ID5(IIH MLOLA]A]<~IcHHHIT(IT7(HHL, OL/MLEAEA<YHMD!A HqH;q0 AET$DփAAHQ8LyPH L9t_t=tAAHQ8HqPH H9kAESHQ8LAPH L9NAESHQ8LqPH L91AESHQ8HAPH H9AESHQ8HyPH H9AESHQ8HYPH H9ACAD9ESHQ8Hq H;QPAAHV8Hy@H;VPEZAHW8Hq`H;WPDXDPHV8HH;VPthDXDPHW8HH;WPtODXDPHV8HH;VPt6DXDPHW8HH;WPtDXDPHV8HH;VP&HIcDDCH9 AIcIILMMqHLmJ)HrHJIIH^I^LFMFHFIFAE99HL}IT?AIcIILmM}HH]L IIMqMuHqIwLAMGHAIGA[AA9HHcHHLuN0MHM9L> AIcHHHMLYMpLII~I{IFICMFMCD[HH]HT3IcIILmKt H9"IcHHHHuHT(HT(IIL NtNt.DADA<A\$D9 EAA<EBEKMcILmMuIcHHEHHLxM}HqIvHQIVLaMfD9tFEBEKIcHHMLYIcHHuH~HVHQLgMcLwMsLWMSAAIcHH}LoMcILeM\$Mt$LwMSMUICIEM{M}AAMcIL]IsMcILUIJIBICLyL~LiLnHQHVD9ApAALcILuMnHHHELXL`MfI{I}MSMUM{M}APAAHcHHuL^HHHEHxHHHNLgMcLwMsLWMSExAAIcHHMHyHHHEL`LhLiIT$HWIt$HwMt$LwAAE&AIVI;V04LAE|$DAAIN8MVPH L9t_t=tAAHJ8HrPH H9kAEKHJ8LjPH L9NAEKHJ8LBPH L91AEKHJ8HzPH H9AEKHJ8LzPH L9AEKHJ8HBPH H9ACAD9EKHJ8Hr H;JPAAHN8Hz@H;NPEYAHO8Hr`H;OPDXDHHN8HH;NPthDXDHHO8HH;OPtODXDHHN8HH;NPt6DXDHHO8HH;OPtDXDHHN8HH;NP&HIcDD7H90AMcMIMM}HJ47HNH~I}LQMWHYI_HAIGAE9.IKTIcIIKLAMcLHLLiHJ7LRHzHyIZI]IBIEMzM}A[AA9IHcHHJ<0LWO9TAIcHHLLXHWLPHJIKLzM{HzI{D[HIT6IcHHILH94McLHHIt>(It(LHH =I|I|EAEA<0A\$D9EAA<EAESMcIMMoMcIMIL$ID$IGHqIuHQIULaMeD9tDEAESIcHLLZMcIMMOIwHrIIIKMiMkIyI{AAMcIMMeIcHLLZHJIMMKML$I{I|$ICID$AAIcHLHwMcIMMeMMLOM\$L^ID$HFM|$L~D9E`ABIcHLHyHHLLhLxLyIUHWIuHwMMLOEXABMcIMMOHHLHpL`MgHNIIHVIQLnMiAxABLcIMIsHHLHHH@ICLaLfLyL~HQHVAAIcIII|(K|=(IIIPKT AEAE<HHAE1ҹE1ACHAE1ҹE1A'HAE1ҹE1AIcIIMl(Ol(HHHGIDE>AE>A<rIcHHH}Ll(Ll(IIIHJL<LIcIIHH]L| (N|+(IIH HLJL DADA<.oMcLHHIT>(IT6(MIL,=K|.K|AA<IcHHHM| (M|(IIH4 MD5OD A]A]<:pE1AE1AHAE1ҹHAE1ҹ-E1AHAE1ɿUHAWAVAUATSH8HIHUIMDMqH@ u/JT*HHt*H;H:HH8[A\A]A^A_]HCHHxHHEH=LEAPHcH9]WI7HtBHUH}9HI?D'EuHGHt IcHqLuAVi1AI}Ht$DLcHLLHHuIEIAAyuM/I}H4@EEE~LE1H{ (AH E9eM/Mt=HULH}VHI?DEuHGHt IbI;RAJLH)LcI9L "eMYN$LHIHIOTLHIIML9IMMLH[A\A]A^A_]HCHHx~*HHHHI 6I; tdHdLPH|HL)Jvttu1ۃÍ|[11@RMAEH[A\A]]MtID$HHx9HH5^HH 2HHHH[A\A]]ÿ3ISHHH<3H^H;:t1HaHH[A\A]]Yv 82?HrLHaLHH[A\A]]*11SQUHHuH ^HH HHH8]HFHHx HH$HHL7H]L;tHa]项HAa]餶H:r]UHAWAVAUATSHHIIAMP¸H9tLv't"1ۃÍT[1DL1qPMAEH[A\A]A^A_]MtID$HHx:HH5 ]HH 2HHHH[A\A]A^A_]ò3IWHHH<3H\H;:t5H_HH[A\A]A^A_]{v %20HrCH_LHH[A\A]A^A_]H1DL1qOUHATSIHMOtmHu#H \HH HI$L![A\]HCHHx~THHHI4H[H;twH_L[A\]颷Ht%HCHHx(HHsH[iHAHHI4Hs[H;t H^L"rGH^HL[A\]-H^UHATSIH;NtmHu#HZHH HI$L![A\]HCHHx~THHHI4HZH;twH]L[A\]鐶Ht%HCHHx(HHsHyZiHAHHI4HaZH;t H]L"rGH]HL[A\]H]萐UHH}HuHHEEHMHvHEEHEHEHMEHEHEPUHPHUHOHUȋOUHHHH HHHEHMHxLHHMHHHxKOEHOHEHOHEOEHHMHHHHxKHHMHHHxKH XHTZHHMHU@0H@wH֊w 1HEHEHEHEHHx/KHEHtHEHH9uDHEH *MH52MpHHhHHhDpJH-XH YHHHHE0HLj~9H[HdHljHXHXDdEEHPJHPJHyLHPHƉ~JHEHtHEHH9uDHEH %LH5-LLHH@HH@DLIHE@H ZHωH8JH8IE*EcHEHtHEHH9uDHEH KH5K4HH(HH(D45IHVH WH0HHHE0HLj7HYH$HljHHD$EEH2IHHHJHHƉHHEHtHEHH9uDHEH JH5J HHHHD 0HHE@H YHωHeHHHHJHBJHljZHUHHH}Hu[t4H?Jj!H5=J@0@}HHuHMEH[HTHHt)HTHHH H9uHTHHEHEHEHPHEȋ@$<t4HIjlH5I@0@}HHuHMEbGHEȋ@t4HZIjpH5XI@0@}HHuHMEGHEȋ@ $< tCHEȋ@ H IjH5I }HHuHUMAFHEf@ft`HEf@H HjsH=HAE0HxHωt֋tHxDsAsYFHHEHEHSHEH@Hf@ff tnH+HjSH5)HH==HAE0HhHH`H`HhD\I\D[A[EHEH@Hf@fftnHGjYH5GH=GAE0HPHHHHHHPDDIDDCAC%EHEH@Hf@f f $< HEH@Hf@f f fHFjH= GA E0H8Hlj4֋4H80H0D,A,D+A+sDHEH@Hf@ff tnHaFj[H5_FH=sFAE0H HHHH DIDACHEHXHEH@H@f@ff tnHEjSH5EH=EAE0HHHHHDIDARCHEH@H@f@fftnH9EjYH57EH=PEAE0HHHHHDIDABHEH@H@f@f f $< HEH@H@f@f f fHDjH=DA E0HHlj֋HHDADABHEH@H@f@ff tnHCj[H5CH=DAE0HHHHHDIDAAH HrH5tCHHHHH AHEHEHEHEHEHEHEH@HEH@HEHH@HEHtHEHH9uDHEH BtH5 CHHHHD.@HEHMHHHEHHH HH?HEHtHEHH9uDHEH PBuH5yBHHHHD?HEHMHHHEHHH HHc?HEHtHEHH9uDHEH AwH5A|HHpHHpD|?HESHEH>HEHEHEHEHEHĐ]UHHH}HuRt4HAU!H5EA@0@}HHuHME>RHKHHt)HKHHH H9uHKHHEHEHEHPHEȋ@$<t4H@UlH5@@0@}HHuHMEB>HEȋ@t4H:@UpH5`@@0@}HHuHME=HEȋ@ $< tCHEȋ@ H ?UH5!@ }HHuHUMA=HEf@ft`HEf@H ?UsH=?AE0HxHωt֋tHxDsAs9=HHEHEHSHEH@Hf@ff tnH ?USH51?H=?AE0HhHH`H`HhD\I\D[A[<HEH@Hf@fftnH|>UYH5>H=>AE0HPHHHHHHPDDIDDCAC<HEH@Hf@f f $< HEH@Hf@f f fH=UH==A E0H8Hlj4֋4H80H0D,A,D+A+S;HEH@Hf@ff tnHA=U[H5g=H=S=AE0H HHHH DIDA:HEHXHEH@H@f@ff tnH<USH5<H=<AE0HHHHHDIDA2:HEH@H@f@fftnH<UYH5?<H=0<AE0HHHHHDIDA9HEH@H@f@f f $< HEH@H@f@f f fHk;UH=;A E0HHlj֋HHDADA8HEH@H@f@ff tnH:U[H5;H=:AE0HHHHHDIDAd8H H]H5T:HHHHH8HEHEHEHEHEHEHEH@HEH@HEHHi7HEHtHEHH9uDHEH 9_H59HHHHD7HEHMHHHEHHH HH6HEHtHEHH9uDHEH 09`H5Y9HHHHD{6HEHMHHHEHHH HHC6HEHtHEHH9uDHEH 8bH58|HHpHHpD|5HEIHEH5HEHEHEHEHEHĐ]UHHH}HuIt4H7@!H5@8@0@}HHuHME5dIHBHHt)HBHHH H9uH|BHHEHEHEHPHEȋ@$<t4H_7@lH57@0@}HHuHME"5HEȋ@t4H7@pH5[7@0@}HHuHME4HEȋ@ $< tCHEȋ@ H 6@H57 }HHuHUMA{4HEf@ft`HEf@H w6@sH=6AE0HxHωt֋tHxDsAs4HHEHEHSHEH@Hf@ff tnH5@SH5,6H=5AE0HhHH`H`HhD\I\D[A[t3HEH@Hf@fftnH\5@YH55H=n5AE0HPHHHHHHPDDIDDCAC2HEH@Hf@f f $< HEH@Hf@f f fH4@H=4A E0H8Hlj4֋4H80H0D,A,D+A+32HEH@Hf@ff tnH!4@[H5b4H=34AE0H HHHH DIDA1HEHXHEH@H@f@ff tnH3@SH53H=3AE0HHHHHDIDA1HEH@H@f@fftnH2@YH5:3H=3AE0HHHHHDIDA0HEH@H@f@f f $< HEH@H@f@f f fHK2@H=i2A E0HHlj֋HHDADA/HEH@H@f@ff tnH1@[H51H=1AE0HHHHHDIDAD/H HHH541HHHHH.HEHEHEHEHEHEHEH@HEH@HEHHI.HEHtHEHH9uDHEH 0JH50HHHHD-HEHMHHHEHHH HH-HEHtHEHH9uDHEH 0KH590HHHHD[-HEHMHHHEHHH HH#-HEHtHEHH9uDHEH }/MH5/|HHpHHpD|,HE@HEH,HEHEHEHEHEHĐ]UHHH}Hu@t4H.+!H5;/@0@}HHuHME,H@H9HHt)Hu9HHH H9uH\9HHEHEHEHPHEȋ@$<t4H?.+lH5.@0@}HHuHME,HEȋ@t4H-+pH5V.@0@}HHuHME+HEȋ@ $< tCHEȋ@ H -+H5. }HHuHUMA[+HEf@ft`HEf@H W-+sH=-AE0HxHωt֋tHxDsAs*HHEHEHSHEH@Hf@ff tnH,+SH5'-H=,AE0HhHH`H`HhD\I\D[A[T*HEH@Hf@fftnH<,+YH5,H=N,AE0HPHHHHHHPDDIDDCAC)HEH@Hf@f f $< HEH@Hf@f f fH++H=+A E0H8Hlj4֋4H80H0D,A,D+A+)HEH@Hf@ff tnH++[H5]+H=+AE0H HHHH DIDA(HEHXHEH@H@f@ff tnHi*+SH5*H=*AE0HHHHHDIDA'HEH@H@f@fftnH)+YH55*H=)AE0HHHHHDIDAb'HEH@H@f@f f $< HEH@H@f@f f fH+)+H=I)A E0HHlj֋HHDADA&HEH@H@f@ff tnH(+[H5(H=(AE0HHHHHDIDA$&H H3H5(HHHHH%HEHEHEHEHEHEHEH@HEH@HEHH)%HEHtHEHH9uDHEH '5H5'HHHHD$HEHMHHHEHHH HH$HEHtHEHH9uDHEH &6H5'HHHHD;$HEHMHHHEHHH HH$HEHtHEHH9uDHEH ]&8H5&|HHpHHpD|#HE7HEH#HEHEHEHEHEHĐ]UHHH}Huo7t4H%!H56&@0@}HHuHME#,7He0HHt)HU0HHH H9uH<0HHEHEHEHPHEȋ@$<t4H%lH5%@0@}HHuHME"HEȋ@t4H$pH5Q%@0@}HHuHME"HEȋ@ $< tCHEȋ@ H $H5% }HHuHUMA;"HEf@ft`HEf@H 7$sH=$AE0HxHωt֋tHxDsAs!HHEHEHSHEH@Hf@ff tnH#SH5"$H=#AE0HhHH`H`HhD\I\D[A[4!HEH@Hf@fftnH#YH5#H=.#AE0HPHHHHHHPDDIDDCAC HEH@Hf@f f $< HEH@Hf@f f fHp"H="A E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH![H5X"H=!AE0H HHHH DIDAjHEHXHEH@H@f@ff tnHI!SH5!H=`!AE0HHHHHDIDAHEH@H@f@fftnH YH50!H= AE0HHHHHDIDABHEH@H@f@f f $< HEH@H@f@f f fH H=) A E0HHlj֋HHDADAHEH@H@f@ff tnH{[H5H=AE0HHHHHDIDAH HH5HHHHHHEHEHEHEHEHEHEH@HEH@HEHH HEHtHEHH9uDHEH c H5HHHHDHEHMHHHEHHH HHvHEHtHEHH9uDHEH !H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH =#H5f|HHpHHpD|HE.HEHtHEHEHEHEHEHĐ]UHHH}HuS.t4H!H51@0@}HHuHMEb.HE'HHt)H5'HHH H9uH'HHEHEHEHPHEȋ@$<t4HlH5@0@}HHuHMEHEȋ@t4HpH5L@0@}HHuHME}HEȋ@ $< tCHEȋ@ H cH5  }HHuHUMAHEf@ft`HEf@H sH=AE0HxHωt֋tHxDsAsHHEHEHSHEH@Hf@ff tnHSH5H=AE0HhHH`H`HhD\I\D[A[HEH@Hf@fftnHYH5H=AE0HPHHHHHHPDDIDDCACHEH@Hf@f f $< HEH@Hf@f f fHPH=iA E0H8Hlj4֋4H80H0D,A,D+A+HEH@Hf@ff tnH[H5SH=AE0H HHHH DIDAJHEHXHEH@H@f@ff tnH)SH5H=@AE0HHHHHDIDAHEH@H@f@fftnHYH5+H=AE0HHHHHDIDA"HEH@H@f@f f $< HEH@H@f@f f fHH= A E0HHlj֋HHDADAnHEH@H@f@ff tnH[[H5H=rAE0HHHHHDIDAH H H5HHHHHHEHEHEHEHEHEHEH@HEH@HEHHHEHtHEHH9uDHEH C H5lHHHHDHEHMHHHEHHH HHVHEHtHEHH9uDHEH  H5HHHHDHEHMHHHEHHH HHHEHtHEHH9uDHEH H5F|HHpHHpD|hHEx%HEHTHEHEHEHEHEHĐ]UHH`H}HrHHt)HbHHH H9uHIHHEHEHEHHE@$<u4H,nH5@0@}HHuЉHMЊEHE@t4HpH5@0@}HHuHMEHE@ t@HE@ H H5X1}HHuHUMAMHE@$<u4HOoH5@0@}HHuHMEHEf@ftNHEf@H sH=AE0H}Hωu֋UHMDMAEHEHHEH@Hf@ff tbHSH5CH=YAE0H}HHuHMHED|I|D{A{+HEH@Hf@fftnHYH5H=AE0HpHHhHhHpDdIdDcAcHEH@Hf@fftnHeH51H=GAE0HXHHPHPHXDLILDKAK HEH@Hf@f f $< HEH@Hf@f f fHH=A E0H@Hlj<֋h.4hE*h` hh hL AS% huge_deallocate: overlapping free itemsImpossible negative allocation (please report this bug).INTEGER_EXPRESSION_Ttest_expression.f90Rwhat the cat dragged innormal exit in test_expressionEXPRESSION_Texpression.f90EXPRESSION:EXP_MODEXP_MODLEFTRIGHTEEXPRESSION:EXP_POWEXP_POWEXPRESSION:EXP_DIVEXP_DIVEXPRESSION:EXP_MULEXP_MULEXPRESSION:EXP_SUBEXP_SUBEXPRESSION:EXP_ADDEXP_ADDEXPRESSION:EVALUATEEVALUATEEXPRESSIONEXPRESSION%LEFTEXPRESSION%RIGHTinvalid op code((X @@@ D<fx<y?} ,kSzRx ,\%  ,L8%  ,|%  ,$  zRx 4$ 4T6r  4M  4)` 4b  44Tf]/  4ly|   ,, ,, ,, ,4, ,d, ,, ,, ,, ,$, ,T, ,, ,, 4  ,ޢ  ,L ,| ,b 4?  , 4D f  4|; 4 zRx , zRx ,  ,Lx  ,|h  ,X  ,H  , 8  ,<( ,lr  (08@  (2<FPZdnx`x    P g    "\B`CSBTARARDpHpppppppRAR>@dyld_stub_binderQr`rp>@___NAGf90_associate_pointerrx>@___NAGf90_badptr3_liner>@___NAGf90_crashr>@___NAGf90_destroy_pointerr>@___NAGf90_end_write_sequentialr>@___NAGf90_f90_init1_dllr>@___NAGf90_f90_init2_dllr>@___NAGf90_f90_init_dllr>@___NAGf90_freememr>@___NAGf90_getmemr>@___NAGf90_init_dllr>@___NAGf90_init_loutputr>@___NAGf90_ipowir>@___NAGf90_line_Allocate_sr>@___NAGf90_lio_write_chr>@___NAGf90_lio_write_ir>@___NAGf90_pagecolourr>@___NAGf90_pu_bad_cdtype_liner>@___NAGf90_rtcrashr>@___NAGf90_rterrr>@___NAGf90_stop_liner>@___NAGf90_write_sequentialr>@_exitr>@_getpagesizer>@_memcpy_ startK_/f90_initmaineNXArgmh_execute_headerG_PNAGf90_fprognameinitlzaopReAllocfast_deallocation_allowed21zaopine_ReAllocaAllocoAllocpAllocaAllocoAllocpAllocɕ͖AllocDeAllocAllocDeAllocllocatable_їAllocDeAllocaDeAllocAllocDeAllocaDeAllocrdinary_AllocDeAlloc՘AllocDeAllocointer_rocrefȟʠ̡xpression_nvironMP_DT_e_integer_expression_tinitialisexp_valuatempowdivsubaddodulУexpression_tHEADERinteger_expression_tHEADERcvqltail22qltail22ql2tail2Љ< $.%^,,,,,,,,,,,,  !   6-)I>LOO_!iw D P `   7 Z s   ` h p x     ' 3 ? K W c o w(ыȏ@@ @C Rd@x6JUM)): Ma w ̐#Ɋ5!GyY8ey0  ,PCZpq0     "<[s0F[x   " ) 1 8 > E L R X _ f m w                       ' . 6 < C J P Y ` g p w ~                   ( 3 A I Q Y b i o |                     % - 5 @ F M T ] e m v ~                      ! ( 1 : A H P X _ j p y Z[\]^_`abcdefghijklmno(*<>ABC@@Z[\]^_`abcdefghijklmno _rebalance_try_misc_allocate_misc_insert_huge_deallocate_misc_deallocate_maybe_coalesce_allocate_dConst1.5810_dConst2.5811_pvars_first.9451___NAGf90_Check_Procref_Args0.5813___NAGf90_Check_Arg.5812___NAGf90_Check_Procref_Args1.5814___NAGf90_Check_Procref_Args2.5815___NAGf90_Check_Procref.5816___NAGf90_Check_Procref_Args0.6572___NAGf90_Check_Arg.6571___NAGf90_Check_Procref_Args1.6573___NAGf90_Check_Procref.6574_pgsize_pointer_misc_allocatable_misc_ordinary_misc_pointer_huge_allocatable_huge_ordinary_huge__ioctx_.5821__ftf_.5817__ftf_.5943__ftf_.6069__ftf_.6195__ftf_.6321__ftf_.6447_NXArgc_NXArgv___NAGf90_ReAlloc___NAGf90_aAlloc___NAGf90_aDeAlloc___NAGf90_allocatable_ql___NAGf90_allocatable_ql2___NAGf90_allocatable_tail___NAGf90_allocatable_tail2___NAGf90_fast_deallocation_allowed___NAGf90_init___NAGf90_laAlloc___NAGf90_laDeAlloc___NAGf90_line_ReAlloc___NAGf90_loAlloc___NAGf90_loDeAlloc___NAGf90_loaDeAlloc___NAGf90_lpAlloc___NAGf90_lpDeAlloc___NAGf90_lzaAlloc___NAGf90_lzoAlloc___NAGf90_lzpAlloc___NAGf90_oAlloc___NAGf90_oDeAlloc___NAGf90_oaDeAlloc___NAGf90_ordinary_ql___NAGf90_ordinary_ql2___NAGf90_ordinary_tail___NAGf90_ordinary_tail2___NAGf90_pAlloc___NAGf90_pDeAlloc___NAGf90_pointer_ql2___NAGf90_pointer_tail2___NAGf90_procref___NAGf90_zaAlloc___NAGf90_zoAlloc___NAGf90_zpAlloc___progname__mh_execute_header_environ_expression_DT_expression_tHEADER_expression_DT_integer_expression_tHEADER_expression_MP__integer_expression_tinitialise_expression_MP_evaluate_expression_MP_exp_add_expression_MP_exp_div_expression_MP_exp_mod_expression_MP_exp_mul_expression_MP_exp_pow_expression_MP_exp_sub_f90_init_f90_init1_f90_init2_mainstart__DefaultRuneLocale___NAGf90_associate_pointer___NAGf90_badptr3_line___NAGf90_crash___NAGf90_destroy_pointer___NAGf90_end_write_sequential___NAGf90_f90_init1_dll___NAGf90_f90_init2_dll___NAGf90_f90_init_dll___NAGf90_freemem___NAGf90_getmem___NAGf90_init_dll___NAGf90_init_loutput___NAGf90_ipowi___NAGf90_line_Allocate_s___NAGf90_lio_write_ch___NAGf90_lio_write_i___NAGf90_pagecolour___NAGf90_pu_bad_cdtype_line___NAGf90_rtcrash___NAGf90_rterr___NAGf90_stop_line___NAGf90_write_sequential___error___maskrune___srget___stderrp___stdinp___stdoutp___swbuf___toupper__exit_abort_access_alarm_atan_atan2_atanf_atoi_ceil_chdir_chmod_chown_clearerr_closedir_cos_cosf_cosh_coshf_ctermid_execl_execlp_execv_execve_execvp_exit_exp2_expm1_expm1f_fclose_fdopen_feof_ferror_fetestexcept_fflush_fileno_finite_floor_floorf_fmod_fmodf_fopen_fork_fprintf_fputs_fread_freopen_frexp_fseek_fseeko_fstat_ftell_ftello_ftruncate_fwrite_getc_getcwd_getegid_getenv_geteuid_getgid_getgroups_gethostname_getlogin_getpagesize_getpgrp_getpid_getppid_getrusage_gettimeofday_getuid_hypotf_isatty_islower_ldexp_link_localtime_r_log2_memchr_memcmp_memcpy_memmove_memset_mkdir_mkfifo_mkstemp_mmap_munmap_nanosleep_open_opendir_pause_pow_powf_putc_readdir_r_remainder_remainderf_rename_rewind_rewinddir_rint_rintf_rmdir_scalbnf_setenv_setgid_setpgid_setsid_setuid_setvbuf_sigaction_signal_sin_sinf_sinh_sinhf_sleep_sprintf_stat_strchr_strcmp_strcpy_strerror_sysconf_system_tan_tanf_tanh_tanhf_time_times_toupper_ttyname_umask_uname_ungetc_unlink_utime_vsnprintf_wait_waitpiddyld_stub_binderDay-II/02-Expression/test_expression.f90100777 0 0 10575 11777426242 13411 0! bof ! ********************************************************************** ! Fortran 95 program test_expression ! ---------------------------------------------------------------------- ! Source Control Strings ! $Id$ ! ---------------------------------------------------------------------- ! Copyright 2012 Dan Nagle ! All Rights Reserved ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later version. ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! General Public License for more details. ! You should have received a copy of the GNU General Public ! License along with this program; if not, write to the Free ! Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! To report bugs, suggest enhancements, or contact the Authors, ! Contact: ! Dan Nagle ! send email to dannagle@verizon.net ! or mail to 2820 Lafayette Dr. ! Boulder, CO 80305 USA ! ---------------------------------------------------------------------- ! test_expression describe the program ! ---------------------------------------------------------------------- ! test_expression uses ! processor_dependencies- describes the processor ! test_expression includes ! ! test_expression reads files ! test_expression writes files ! test_expression constants ! test_expression types ! test_expression data ! test_expression library ! ********************************************************************** ! test_expression ! ---------------------------------------------------------------------- program test_expression ! ---------------------------------------------------------------------- ! test_expression uses modules ! ---------------------------------------------------------------------- ! processor description use, intrinsic :: iso_fortran_env, only: real64 ! derivative type use :: expression ! ---------------------------------------------------------------------- ! all names are declared: require explicit declarations implicit none ! ---------------------------------------------------------------------- ! test_expression RCS strings ! ---------------------------------------------------------------------- ! program source filename supplied by RCS character( len= *), parameter :: test_expression_rcs_id = & '$Id$' ! ---------------------------------------------------------------------- ! test_expression constants ! ---------------------------------------------------------------------- ! ---------------------------------------------------------------------- ! test_expression types ! ---------------------------------------------------------------------- ! ---------------------------------------------------------------------- ! test_expression data ! ---------------------------------------------------------------------- type( integer_expression_t), target :: x, y type( integer_expression_t), pointer :: r ! ---------------------------------------------------------------------- ! test_expression text ! ---------------------------------------------------------------------- continue x = integer_expression_t( 0, null(), null(), 0) y = integer_expression_t( 0, null(), null(), 0) r => x + y call evaluate( r) write( unit= *, fmt= *) 'what the cat dragged in', r% value x% value = 42 y% value = 99 call evaluate( r) write( unit= *, fmt= *) 'what the cat dragged in', r% value stop 'normal exit in test_expression' ! ---------------------------------------------------------------------- ! test_expression library ! ---------------------------------------------------------------------- contains ! ---------------------------------------------------------------------- ! test_expression ! $Id$ ! ********************************************************************** ! eof end program test_expression Day-II/03-pthreads/ 40777 0 0 0 11777562507 7164 5Day-II/03-pthreads/._pthread.f90100777 0 0 10000 11777553170 11453 0Mac OS X  2TEXTATTR;kcom.apple.TextEncoding\%com.apple.metadata:kMDItemWhereFromsUTF-8;134217984bplist00_-http://users.erols.com/dnagle/pub/pthread.f03 :This resource fork intentionally left blank Day-II/03-pthreads/hw100777 0 0 32620 11777554644 7653 0H H__PAGEZERO(__TEXT __text__TEXT__stubs__TEXTB__stub_helper__TEXT__cstring__TEXT8__const__TEXT__eh_frame__TEXT@@__DATA  __dyld__DATA 8 __nl_symbol_ptr__DATA8 8  __la_symbol_ptr__DATAH XH  __common__DATA  __bss2__DATA H__LINKEDIT00"000 0@`113 P 3 /usr/lib/dyldvH59my $ * H/usr/local/gfortran/lib/libgfortran.3.dylib 8/usr/lib/libSystem.B.dylib H/usr/local/gfortran/lib/libgcc_s.1.dylib H/usr/local/gfortran/lib/libquadmath.0.dylib&1jHHH}HuHHHH9uHASLAS% % UHSHH tH5OH=|l H}HDžDžDžHHIH H5 H@HH%E]EaEHH҅t HH5H=+H҅t HH5H=HPEDЋEHH҅t HH5*H=jWH҅t HH5dH=<)HPHEHH<EHH҅t HH5 H=H҅t HH5?H=HPHEHHHHEHHDž DžDžHHjH H5LHaHMHHHLH H5#H+HMHHHHHE9tH59H=REUU]E]EEHH҅t HH5H=KH҅t HH5XH=UHcHɅtH5H=HɅtH5MH=xHJHUHHHUHHUHDŠHHEHHDž(DžDžHHkH H5eHbHMHHHMH H5$H,HMHHHHH5HEHH҅t HH5H=pH҅t HH5H=BrHPHEHH HHHuHHTE9tH5H=EUU]wH=#UHH}HuHUEH։H5UHHHHEHHDž 9DžDžHH`HH5HWHHHH?HHEÐ%|%~%%%%%%%%%hfh"\h<RhYHhs>h4h*h hh h&LAS%Recursive call to nonrecursive procedure 'hello_world'At line 1 of file hw.f90hw.f90Index '%ld' of dimension 1 of array 'tasks' below lower bound of %ldAt line 29 of file hw.f90Index '%ld' of dimension 1 of array 'tasks' above upper bound of %ldIndex '%ld' of dimension 1 of array 'threads' below lower bound of %ldAt line 31 of file hw.f90Index '%ld' of dimension 1 of array 'threads' above upper bound of %ldLoop variable has been modifiedAt line 27 of file hw.f90At line 38 of file hw.f90At line 40 of file hw.f90At line 36 of file hw.f90Hello, world!started task with code joined task task returned normal exit in hello_worldI am zRx , 4LR= 8 4W  __    &0:DNXbl"UB[@dyld_stub_binderQr8rH@__gfortran_runtime_error_atrP@__gfortran_set_argsrX@__gfortran_set_optionsr`@__gfortran_st_writerh@__gfortran_st_write_donerp@__gfortran_stop_stringrx@__gfortran_transfer_character_writer@__gfortran_transfer_integer_writer@_exitr@_pthread_creater@_pthread_join_ startQ_-mainVtask[NXArg`environrmh_execute_headerM_prognamew)56chvmAAAA)< =.6 F [ c k w 1Uw} @  dyld_stub_binding_helper__dyld_func_lookup_MAIN___options.7.1573_is_recursive.0.1545_NXArgc_NXArgv___progname__mh_execute_header_environ_main_taskstart__gfortran_runtime_error_at__gfortran_set_args__gfortran_set_options__gfortran_st_write__gfortran_st_write_done__gfortran_stop_string__gfortran_transfer_character_write__gfortran_transfer_integer_write_exit_pthread_create_pthread_joindyld_stub_binderDay-II/03-pthreads/hw.f90100777 0 0 2553 11777554634 10231 0program hello_world use, intrinsic :: iso_c_binding use pthreads integer, parameter :: number_of_threads = 4 type( pthread_t), dimension( 1: number_of_threads), target :: threads integer :: i, th_stat integer( kind= c_int), dimension( 1: number_of_threads), target :: tasks interface recursive function task( me) result( code) bind( c) use, intrinsic :: iso_c_binding integer( c_int), intent( in) :: me integer( c_int) :: code end function task end interface continue write( unit= *, fmt= *) 'Hello, world!' start_tasks: do i = 1, number_of_threads tasks( i) = i th_stat = pthread_create( & c_loc( threads( i)), c_null_ptr, c_funloc( task), c_loc( tasks( i))) write( unit= *, fmt= *) 'started task ', i, ' with code ', th_stat end do start_tasks wait_tasks: do i = 1, number_of_threads th_stat = pthread_join( threads( i), c_loc( tasks( i))) write( unit= *, fmt= *) 'joined task ', i, ' with code ', th_stat, & ' task returned ', tasks( i) end do wait_tasks stop 'normal exit in hello_world' end program hello_world recursive function task( me) result( code) bind( c) use, intrinsic :: iso_c_binding integer( kind= c_int), target, intent( in) :: me integer( kind= c_int) :: code continue code = me write( unit= *, fmt= *) 'I am ', me return end function task Day-II/03-pthreads/hw.mk100777 0 0 417 11777554564 10221 0FC=gfortran -c FCFLAGS=-std=f2008 -Wall -fcheck=all -pthread LD=gfortran LDFLAGS=${FCFLAGS} LIBS=-lpthread hw: pthread.o hw.o ${LD} ${LDFLAGS} hw.o pthread.o ${LIBS} -o hw pthread.o: pthread.f90 ${FC} ${FCFLAGS} pthread.f90 hw.o: hw.f90 ${FC} ${FCFLAGS} hw.f90 Day-II/03-pthreads/hw.o100777 0 0 11330 11777554644 10103 0@ < `8 __text__TEXT` X__cstring__TEXT8 __const__TEXT ` __bss2__DATA8 __eh_frame__TEXT X hhp P UHSHHtH5H=HHDžDžDžHHH H5xHHHE]EaEHH҅t HH5H=H҅t HH5H=HPEDЋEHH҅t HH5H=H҅t HH5H=HPHEHH<EHH҅t HH5H=H҅t HH5H=HPHEHHHHEHHDž DžDžHHH H5HHMHHHH H5}HHMHHHHHE9tH5H=EUU]E]EEHH҅t HH5H=H҅t HH5H=UHcHɅtH5H=HɅtH5H=HJHUHHHUHHUHDŠHHEHHDž(DžDžHHH H5HHMHHHH H5~HHMHHHHH5_HEHH҅t HH5H=H҅t HH5H=HPHEHH HHHHHE9tH5H=EUU]wH=}UHH}HuHUEH։H5UHHHHEHHDž 9DžDžHHHH5HHHHHHHERecursive call to nonrecursive procedure 'hello_world'At line 1 of file hw.f90hw.f90Index '%ld' of dimension 1 of array 'tasks' below lower bound of %ldAt line 29 of file hw.f90Index '%ld' of dimension 1 of array 'tasks' above upper bound of %ldIndex '%ld' of dimension 1 of array 'threads' below lower bound of %ldAt line 31 of file hw.f90Index '%ld' of dimension 1 of array 'threads' above upper bound of %ldLoop variable has been modifiedAt line 27 of file hw.f90At line 38 of file hw.f90At line 40 of file hw.f90At line 36 of file hw.f90Hello, world!started task with code joined task task returned normal exit in hello_worldI am zRx , 4L= 8 4x  --u-mZ-&-----  l-]-6-, %- ----j-bO--- - - z]-S L-  ----k-cP-- ---unQ-G@- ---q-=2,-"^P^P ^  Mh `%*/49A8 V` f nU1t__gfortran_runtime_error_at__gfortran_st_write__gfortran_transfer_character_write__gfortran_st_write_done_task_pthread_create__gfortran_transfer_integer_write_pthread_join__gfortran_stop_string_main__gfortran_set_args__gfortran_set_optionsLC0LC1LC2LC4LC5LC6LC7LC8LC9LC12LC13LC14LC17LC18_MAIN___is_recursive.0.1545_options.7.1573EH_frame1Day-II/03-pthreads/pthread.f90100777 0 0 65047 11777553170 11263 0! bof ! ********************************************************************** ! Fortran 2003 module pthreads ! ********************************************************************** ! Source Control Strings ! $Id: pthread.f03 1.1 2005/03/24 17:10:07Z Dan Exp $ ! ********************************************************************** ! Copyright 2012 Dan Nagle ! This library is free software; you can redistribute it and/or ! modify it under the terms of the GNU Library General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later version. ! This library is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! Library General Public License for more details. ! You should have received a copy of the GNU Library General Public ! License along with this library; if not, write to the Free ! Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! To report bugs, suggest enhancements, etc. to the Authors, ! Contact: ! Dan Nagle ! send email to dannagle@verizon.net ! or mail to 2820 Lafayette Dr ! Boulder CO 80305 USA ! ********************************************************************** ! pthreads description ! ********************************************************************** ! pthreads uses ! intrinsic iso_c_binding ! pthreads constants ! pthreads types ! pthread_attr_t ! pthread_t ! pthread_condattr_t ! pthread_cond_t ! pthread_mutex_t ! sched_param_t ! pthread_key_t ! pthread_mutexattr_t ! pthread_mutex_t ! pthread_once_t ! sigset_t ! pthreads data ! pthreads library ! pthread_atfork() ! pthread_attr_destroy() ! pthread_attr_getdetachstate() ! pthread_attr_getinheritsched() ! pthread_attr_getschedparam() ! pthread_attr_getschedpolicy() ! pthread_attr_getscope() ! pthread_attr_getstackaddr() ! pthread_attr_getstacksize() ! pthread_attr_init() ! pthread_attr_setdetachstate() ! pthread_attr_setinheritsched() ! pthread_attr_setschedparam() ! pthread_attr_setschedpolicy() ! pthread_attr_setscope() ! pthread_attr_setstackaddr() ! pthread_attr_setstacksize() ! pthread_cancel() ! pthread_cleanup_pop() ! pthread_cleanup_push() ! pthread_condattr_destroy() ! pthread_condattr_getpshared() ! pthread_condattr_init() ! pthread_condattr_setpshared() ! pthread_cond_broadcast() ! pthread_cond_destroy() ! pthread_cond_init() ! pthread_cond_signal() ! pthread_cond_timedwait() ! pthread_cond_wait() ! pthread_create() ! pthread_detach() ! pthread_equal() ! pthread_exit() ! pthread_getschedparam() ! pthread_getspecific() ! pthread_join() ! pthread_key_create() ! pthread_key_delete() ! pthread_kill() ! pthread_mutexattr_destroy() ! pthread_mutexattr_getprioceiling() ! pthread_mutexattr_getprotocol() ! pthread_mutexattr_getpshared() ! pthread_mutexattr_init() ! pthread_mutexattr_setprioceiling() ! pthread_mutexattr_setprotocol() ! pthread_mutexattr_setpshared() ! pthread_mutex_destroy() ! pthread_mutex_init() ! pthread_mutex_lock() ! pthread_mutex_trylock() ! pthread_mutex_unlock() ! pthread_once() ! pthread_self() ! pthread_setcancelstate() ! pthread_setcanceltype() ! pthread_setschedparam() ! pthread_setspecific() ! pthread_sigmask() ! pthread_testcancel() ! ********************************************************************** ! pthreads ! Note that, since the pthreads standard only specifies what works ! when pthread.h is included and the C source file is run through ! the C preprocessor, not everything may be specified with certainty. ! That is, you may have to change the values of some constants, ! or the definition of some types, in order to have a working program. ! For more on pthreads, consult the POSIX standard, or ! Title: _Pthreads Programming_ ! Authors: Nichols, Buttlar, Farrell ! Publisher: O'Reilly & Associates, Inc. ! Year: 1996 ! ISBN: 1-56592-115-1 ! ********************************************************************** module pthreads ! ********************************************************************** ! pthreads uses modules use, intrinsic :: iso_c_binding ! ********************************************************************** ! explicit names implicit none ! ********************************************************************** ! explicit exports private ! ********************************************************************** ! pthreads RCS strings ! ********************************************************************** ! module source filename supplied by RCS character( len= *), public, parameter :: pthreads_rcs_id = & '$Id: pthread.f03 1.1 2005/03/24 17:10:07Z Dan Exp $' ! ********************************************************************** ! pthreads constants ! ********************************************************************** ! The values of these constants *may* be right for your pthreads ! implementation. Check the pthread.h file for the correct values ! to use. ! ---------------------------------------------------------------------- ! Since typealias has been removed from the draft, a new way ! of making the types pthreads requires must be found. The way ! I have chosen is to make a derived type with a single private ! component which is an integer array. This is the size of that array. ! You may need to enlarge the array for your system, check ! the pthreads.h file for your system to find the value needed. ! #include ! int main() ! { ! printf( "int: %d\n", sizeof( int)); ! printf( "pthread: %d\n", sizeof(pthread_t)); ! printf( "pthread key: %d\n", sizeof(pthread_key_t)); ! return 0; ! } integer, parameter :: size_of_types = 2 ! ---------------------------------------------------------------------- ! A pthread is joinable if another thread can wait for it ! via a call to pthread_join() and retrieve its exit value. ! A pthread is detached if it isn't joinable. integer, public, parameter :: pthread_create_detached = 0 ! default integer, public, parameter :: pthread_create_joinable = 1 ! A pthread has system scope if it is to be scheduled as an equal ! from among all the threads within the system. A pthread has ! process scope if it is to be scheduled within the process only. ! default integer, public, parameter :: pthread_scope_system = 0 integer, public, parameter :: pthread_scope_process = 1 ! A pthread may inherit its scheduling properties from its creator ! or explicitly declare them. ! default integer, public, parameter :: pthread_inherit_sched = 0 integer, public, parameter :: pthread_explicit_sched = 1 ! The defined scheduling policies are below. integer, public, parameter :: sched_other = 0 integer, public, parameter :: sched_fifo = 1 integer, public, parameter :: sched_rr = 2 ! A mutex or condition variable may be known outside the process ! of the creating thread or not. (Some systems do not support shared.) ! Most Fortran uses will use only process anyway. integer, public, parameter :: pthread_process_shared = 0 ! default integer, public, parameter :: pthread_process_private = 1 ! A pthread is cancelable is another pthread can cause its exit ! via a call to pthread_cancel(). A pthread may need to be unstoppable ! for a time to allow it to atomically complete some code, or it may need ! to defer acceptance of the cancel signal until it reaches ! a cancelation point. integer, public, parameter :: pthread_cancel_enable = 0 integer, public, parameter :: pthread_cancel_disable = 1 ! default integer, public, parameter :: pthread_cancel_deferred = 2 integer, public, parameter :: pthread_cancel_asynchronous = 3 integer, public, parameter :: pthread_canceled = 0 ! Priority policies of a mutex. These may not be defined by your pthreads. integer, public, parameter :: pthread_prio_inherit = 0 integer, public, parameter :: pthread_prio_protect = 1 integer, public, parameter :: pthread_prio_none = 2 ! ********************************************************************** ! pthreads types ! ********************************************************************** ! These types *may* be valid for your pthreads, ! or you may have to fix them. Check the pthread.h file ! for the C compiler on your target system. ! Since your Fortran program need not manipulate variables ! of these types, the strategy is to make a type whose ! only component is a private integer array of sufficient size. ! You must glean the size from the pthread.h file. ! The bind( c) and the kind is c_int to allay alignment issues. ! ---------------------------------------------------------------------- type, bind( c) :: pthread_t private integer( kind= c_int), dimension( size_of_types) :: secret end type pthread_t type, bind( c) :: pthread_key_t private integer( kind= c_int), dimension( size_of_types) :: secret end type pthread_key_t ! This one should be right. (It's required by the C standard ! to be some kind of integer, c_size_t is the Fortran name of that kind.) type, bind( c) :: size_t private integer( kind= c_size_t) :: secret end type size_t ! ---------------------------------------------------------------------- ! The using program will need these. public :: pthread_t public :: pthread_key_t public :: size_t ! ---------------------------------------------------------------------- ! When examining the pthread.h file, you may notice other types, ! such as pthread_attr_t, etc. Since pthreads only passes pointers ! to these types, you should always use the Fortran c_ptr type here. ! Variables of these types are not manipulated by the program ! using pthreads. ! Also, the static initializers for these types are not defined. ! You must use calls to the init routines. ! ********************************************************************** ! pthreads data ! ********************************************************************** ! ********************************************************************** ! pthread library ! ********************************************************************** ! The program will use these. public :: pthread_atfork public :: pthread_attr_destroy public :: pthread_attr_getdetachstate public :: pthread_attr_getinheritsched public :: pthread_attr_getschedparam public :: pthread_attr_getschedpolicy public :: pthread_attr_getscope public :: pthread_attr_getstackaddr public :: pthread_attr_getstacksize public :: pthread_attr_init public :: pthread_attr_setdetachstate public :: pthread_attr_setinheritsched public :: pthread_attr_setschedparam public :: pthread_attr_setschedpolicy public :: pthread_attr_setscope public :: pthread_attr_setstackaddr public :: pthread_attr_setstacksize public :: pthread_cancel public :: pthread_cleanup_pop public :: pthread_cleanup_push public :: pthread_condattr_destroy public :: pthread_condattr_getpshared public :: pthread_condattr_init public :: pthread_condattr_setpshared public :: pthread_cond_broadcast public :: pthread_cond_destroy public :: pthread_cond_init public :: pthread_cond_signal public :: pthread_cond_timedwait public :: pthread_cond_wait public :: pthread_create public :: pthread_detach public :: pthread_equal public :: pthread_exit public :: pthread_getschedparam public :: pthread_getspecific public :: pthread_join public :: pthread_key_create public :: pthread_key_delete public :: pthread_kill public :: pthread_mutexattr_destroy public :: pthread_mutexattr_getprioceiling public :: pthread_mutexattr_getprotocol public :: pthread_mutexattr_getpshared public :: pthread_mutexattr_init public :: pthread_mutexattr_setprioceiling public :: pthread_mutexattr_setprotocol public :: pthread_mutexattr_setpshared public :: pthread_mutex_destroy public :: pthread_mutex_init public :: pthread_mutex_lock public :: pthread_mutex_trylock public :: pthread_mutex_unlock public :: pthread_once public :: pthread_self public :: pthread_setcancelstate public :: pthread_setcanceltype public :: pthread_setschedparam public :: pthread_setspecific public :: pthread_sigmask public :: pthread_testcancel ! ********************************************************************** ! Note that, in a multithreaded environment, the single C variable errno ! cannot be used to return status information, so many of these functions ! return the status of their (attempted) action as their return value. ! ---------------------------------------------------------------------- ! These interfaces *may* be valid for your pthreads, ! or some names may be implemented as C macros. Check the pthread.h file ! for the C compiler on your target system. ! If some of these functions are macros on your target system, ! you must place a wrapper routine (which rewrites the macro in Fortran) ! below the contains of this file, and replace the interface here ! to reflect the change. ! ---------------------------------------------------------------------- interface integer( kind= c_int) function pthread_atfork( prepare, parent, child) bind( c) import :: c_funptr, c_int type( c_funptr), value :: prepare type( c_funptr), value :: parent type( c_funptr), value :: child end function pthread_atfork integer( kind= c_int) function pthread_attr_destroy( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_attr_destroy integer( kind= c_int) function pthread_attr_getdetachstate( attr, detachstate) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: detachstate end function pthread_attr_getdetachstate integer( kind= c_int) function pthread_attr_getinheritsched( attr, inheritsched) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: inheritsched end function pthread_attr_getinheritsched integer( kind= c_int) function pthread_attr_getscope( attr, param) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: param end function pthread_attr_getscope integer( kind= c_int) function pthread_attr_getschedpolicy( attr, policy) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: policy end function pthread_attr_getschedpolicy integer( kind= c_int) function pthread_attr_getschedparam( attr, param) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: param end function pthread_attr_getschedparam integer( kind= c_int) function pthread_attr_getstackaddr( attr, stackaddr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr) :: stackaddr end function pthread_attr_getstackaddr integer( kind= c_int) function pthread_attr_getstacksize( attr, stacksize) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: stacksize end function pthread_attr_getstacksize integer( kind= c_int) function pthread_attr_init( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_attr_init integer( kind= c_int) function pthread_attr_setdetachstate( attr, detachstate) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: detachstate end function pthread_attr_setdetachstate integer( kind= c_int) function pthread_attr_setinheritsched( attr, inherit) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: inherit end function pthread_attr_setinheritsched integer( kind= c_int) function pthread_attr_setschedparam( attr, param) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: param end function pthread_attr_setschedparam integer( kind= c_int) function pthread_attr_setschedpolicy( attr, policy) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: policy end function pthread_attr_setschedpolicy integer( kind= c_int) function pthread_attr_setscope( attr, scope) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: scope end function pthread_attr_setscope integer( kind= c_int) function pthread_attr_setstackaddr( attr, stackaddr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: stackaddr end function pthread_attr_setstackaddr integer( kind= c_int) function pthread_attr_setstacksize( attr, stacksize) bind( c) import :: c_ptr, c_int, size_t type( c_ptr), value :: attr type( size_t), value :: stacksize end function pthread_attr_setstacksize integer( kind= c_int) function pthread_cancel( thread) bind( c) import :: pthread_t, c_int type( pthread_t), value :: thread end function pthread_cancel integer( kind= c_int) function pthread_cleanup_pop( execute) bind( c) import :: c_int integer( kind= c_int), value :: execute end function pthread_cleanup_pop integer( kind= c_int) function pthread_cleanup_push( routine, arg) bind( c) import :: c_ptr, c_funptr, c_int type( c_funptr), value :: routine type( c_ptr), value :: arg end function pthread_cleanup_push integer( kind= c_int) function pthread_condattr_destroy( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_condattr_destroy integer( kind= c_int) function pthread_condattr_getpshared( attr, pshared) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: pshared end function pthread_condattr_getpshared integer( kind= c_int) function pthread_condattr_init( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_condattr_init integer( kind= c_int) function pthread_condattr_setpshared( attr, pshared) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: pshared end function pthread_condattr_setpshared integer( kind= c_int) function pthread_cond_broadcast( cond) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond end function pthread_cond_broadcast integer( kind= c_int) function pthread_cond_destroy( cond) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond end function pthread_cond_destroy integer( kind= c_int) function pthread_cond_init( cond, attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond type( c_ptr), value :: attr end function pthread_cond_init integer( kind= c_int) function pthread_cond_signal( cond) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond end function pthread_cond_signal integer( kind= c_int) function pthread_cond_timedwait( cond, mutex, abstime) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond type( c_ptr), value :: mutex type( c_ptr), value :: abstime end function pthread_cond_timedwait integer( kind= c_int) function pthread_cond_wait( cond, mutex) bind( c) import :: c_ptr, c_int type( c_ptr), value :: cond type( c_ptr), value :: mutex end function pthread_cond_wait integer( kind= c_int) function pthread_create( thread, attr, start_routine, arg) bind( c) import :: c_ptr, c_funptr, c_int type( c_ptr), value :: thread type( c_ptr), value :: attr type( c_funptr), value :: start_routine type( c_ptr), value :: arg end function pthread_create integer( kind= c_int) function pthread_detach( thread) bind( c) import :: pthread_t, c_int type( pthread_t), value :: thread end function pthread_detach integer( kind= c_int) function pthread_equal( t1, t2) bind( c) import :: pthread_t, c_int type( pthread_t), value :: t1 type( pthread_t), value :: t2 end function pthread_equal subroutine pthread_exit( value) bind( c) import :: c_ptr type( c_ptr), value :: value end subroutine pthread_exit integer( kind= c_int) function pthread_getschedparam( thread, policy, param) bind( c) import :: c_ptr, c_int, pthread_t type( pthread_t), value :: thread type( c_ptr), value :: policy type( c_ptr), value :: param end function pthread_getschedparam integer( kind= c_int) function pthread_getspecific( key) bind( c) import :: pthread_key_t, c_int type( pthread_key_t), value :: key end function pthread_getspecific integer( kind= c_int) function pthread_join( thread, value_ptr) bind( c) import :: c_ptr, c_int, pthread_t type( pthread_t), value :: thread type( c_ptr) :: value_ptr end function pthread_join integer( kind= c_int) function pthread_key_create( key, destructor) bind( c) import :: c_ptr, c_int type( c_ptr), value :: key type( c_ptr), value :: destructor end function pthread_key_create integer( kind= c_int) function pthread_key_delete( key) bind( c) import :: pthread_key_t, c_int type( pthread_key_t), value :: key end function pthread_key_delete integer( kind= c_int) function pthread_kill( thread, sig) bind( c) import :: pthread_t, c_int type( pthread_t), value :: thread integer( c_int), value :: sig end function pthread_kill integer( kind= c_int) function pthread_mutexattr_destroy( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_mutexattr_destroy integer( kind= c_int) function pthread_mutexattr_getprioceiling( attr, prioceiling) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: prioceiling end function pthread_mutexattr_getprioceiling integer( kind= c_int) function pthread_mutexattr_getprotocol( attr, protocol) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: protocol end function pthread_mutexattr_getprotocol integer( kind= c_int) function pthread_mutexattr_getpshared( attr, pshared) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr type( c_ptr), value :: pshared end function pthread_mutexattr_getpshared integer( kind= c_int) function pthread_mutexattr_init( attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr end function pthread_mutexattr_init integer( kind= c_int) function pthread_mutexattr_setprioceiling( attr, prioceiling) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: prioceiling end function pthread_mutexattr_setprioceiling integer( kind= c_int) function pthread_mutexattr_setprotocol( attr, protocol) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: protocol end function pthread_mutexattr_setprotocol integer( kind= c_int) function pthread_mutexattr_setpshared( attr, pshared) bind( c) import :: c_ptr, c_int type( c_ptr), value :: attr integer( kind= c_int), value :: pshared end function pthread_mutexattr_setpshared integer( kind= c_int) function pthread_mutex_destroy( mutex) bind( c) import :: c_ptr, c_int type( c_ptr), value :: mutex end function pthread_mutex_destroy integer( kind= c_int) function pthread_mutex_init( mutex, attr) bind( c) import :: c_ptr, c_int type( c_ptr), value :: mutex type( c_ptr), value :: attr end function pthread_mutex_init integer( kind= c_int) function pthread_mutex_lock( mutex) bind( c) import :: c_ptr, c_int type( c_ptr), value :: mutex end function pthread_mutex_lock integer( kind= c_int) function pthread_mutex_trylock( mutex) bind( c) import :: c_ptr, c_int type( c_ptr), value :: mutex end function pthread_mutex_trylock integer( kind= c_int) function pthread_mutex_unlock( mutex) bind( c) import :: c_ptr, c_int type( c_ptr), value :: mutex end function pthread_mutex_unlock integer( kind= c_int) function pthread_once( once_block, init_routine) bind( c) import :: c_ptr, c_int type( c_ptr), value :: once_block type( c_ptr), value :: init_routine end function pthread_once type( pthread_t) function pthread_self( ) bind( c) import :: pthread_t end function pthread_self integer( kind= c_int) function pthread_setcancelstate( state, oldstate) bind( c) import :: c_ptr, c_int integer( kind= c_int), value :: state type( c_ptr), value :: oldstate end function pthread_setcancelstate integer( kind= c_int) function pthread_setcanceltype( type, oldtype) bind( c) import :: c_ptr, c_int integer( kind= c_int), value :: type type( c_ptr), value :: oldtype end function pthread_setcanceltype integer( kind= c_int) function pthread_setschedparam( thread, policy, param) bind( c) import :: c_ptr, c_int type( c_ptr), value :: thread integer( kind= c_int), value :: policy type( c_ptr), value :: param end function pthread_setschedparam integer( kind= c_int) function pthread_setspecific( key, value) bind( c) import :: c_ptr, c_int, pthread_key_t type( pthread_key_t), value :: key type( c_ptr), value :: value end function pthread_setspecific integer( kind= c_int) function pthread_sigmask( how, set, oset) bind( c) import :: c_ptr, c_int integer( kind= c_int), value :: how type( c_ptr), value :: set type( c_ptr), value :: oset end function pthread_sigmask type( pthread_t) function pthread_testcancel( ) bind( c) import :: pthread_t end function pthread_testcancel end interface ! ********************************************************************** ! module procedures ! ********************************************************************** ! If any of the functions whose interfaces are defined above ! are implemented on your system as C macros, uncomment the following ! contains statement and write a function below to implement ! the C macro. Change the interface above to reflect the change. contains ! ********************************************************************** ! pthreads ! $Id: pthread.f03 1.1 2005/03/24 17:10:07Z Dan Exp $ ! ********************************************************************** end module pthreads Day-II/03-pthreads/pthread.o100777 0 0 270 11777554644 11055 0 __text__TEXTDay-II/03-pthreads/pthreads.mod100777 0 0 114442 11777553472 11646 0GFORTRAN module version '6' created from pthread.f90 on Thu Jul 12 07:55:07 2012 MD5:2ec6d81fbb7e62429be9609d897495f4 -- If you edit this, you'll get what you deserve. (() () () () () () () () () () () () () () () () () () () () () () () () () () ()) () () () () () (2 'pthread_atfork' 'pthreads' 'pthread_atfork' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 3 0 (4 5 6) () 2 () () () 0 0) 7 'pthread_attr_destroy' 'pthreads' 'pthread_attr_destroy' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 8 0 (9) () 7 () () () 0 0) 10 'pthread_attr_getdetachstate' 'pthreads' 'pthread_attr_getdetachstate' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 11 0 (12 13) () 10 () () () 0 0) 14 'pthread_attr_getinheritsched' 'pthreads' 'pthread_attr_getinheritsched' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 15 0 (16 17) () 14 () () () 0 0) 18 'pthread_attr_getschedparam' 'pthreads' 'pthread_attr_getschedparam' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 19 0 (20 21) () 18 () () () 0 0) 22 'pthread_attr_getschedpolicy' 'pthreads' 'pthread_attr_getschedpolicy' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 23 0 (24 25) () 22 () () () 0 0) 26 'pthread_attr_getscope' 'pthreads' 'pthread_attr_getscope' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 27 0 (28 29) () 26 () () () 0 0) 30 'pthread_attr_getstackaddr' 'pthreads' 'pthread_attr_getstackaddr' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 31 0 (32 33) () 30 () () () 0 0) 34 'pthread_attr_getstacksize' 'pthreads' 'pthread_attr_getstacksize' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 35 0 (36 37) () 34 () () () 0 0) 38 'pthread_attr_init' 'pthreads' 'pthread_attr_init' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 39 0 (40) () 38 () () () 0 0) 41 'pthread_attr_setdetachstate' 'pthreads' 'pthread_attr_setdetachstate' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 42 0 (43 44) () 41 () () () 0 0) 45 'pthread_attr_setinheritsched' 'pthreads' 'pthread_attr_setinheritsched' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 46 0 (47 48) () 45 () () () 0 0) 49 'pthread_attr_setschedparam' 'pthreads' 'pthread_attr_setschedparam' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 50 0 (51 52) () 49 () () () 0 0) 53 'pthread_attr_setschedpolicy' 'pthreads' 'pthread_attr_setschedpolicy' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 54 0 (55 56) () 53 () () () 0 0) 57 'pthread_attr_setscope' 'pthreads' 'pthread_attr_setscope' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 58 0 (59 60) () 57 () () () 0 0) 61 'pthread_attr_setstackaddr' 'pthreads' 'pthread_attr_setstackaddr' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 62 0 (63 64) () 61 () () () 0 0) 65 'pthread_attr_setstacksize' 'pthreads' 'pthread_attr_setstacksize' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 66 0 (67 68) () 65 () () () 0 0) 69 'pthread_cancel' 'pthreads' 'pthread_cancel' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 70 0 (71) () 69 () () () 0 0) 72 'pthread_cancel_asynchronous' 'pthreads' 'pthread_cancel_asynchronous' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '3') () 0 () () () 0 0) 73 'pthread_cancel_deferred' 'pthreads' 'pthread_cancel_deferred' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2') () 0 () () () 0 0) 74 'pthread_cancel_disable' 'pthreads' 'pthread_cancel_disable' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 75 'pthread_cancel_enable' 'pthreads' 'pthread_cancel_enable' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 76 'pthread_canceled' 'pthreads' 'pthread_canceled' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 77 'pthread_cleanup_pop' 'pthreads' 'pthread_cleanup_pop' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 78 0 (79) () 77 () () () 0 0) 80 'pthread_cleanup_push' 'pthreads' 'pthread_cleanup_push' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 81 0 (82 83) () 80 () () () 0 0) 84 'pthread_cond_broadcast' 'pthreads' 'pthread_cond_broadcast' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 85 0 (86) () 84 () () () 0 0) 87 'pthread_cond_destroy' 'pthreads' 'pthread_cond_destroy' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 88 0 (89) () 87 () () () 0 0) 90 'pthread_cond_init' 'pthreads' 'pthread_cond_init' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 91 0 (92 93) () 90 () () () 0 0) 94 'pthread_cond_signal' 'pthreads' 'pthread_cond_signal' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 95 0 (96) () 94 () () () 0 0) 97 'pthread_cond_timedwait' 'pthreads' 'pthread_cond_timedwait' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 98 0 (99 100 101) () 97 () () () 0 0) 102 'pthread_cond_wait' 'pthreads' 'pthread_cond_wait' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 103 0 (104 105) () 102 () () () 0 0) 106 'pthread_condattr_destroy' 'pthreads' 'pthread_condattr_destroy' 1 ( (PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 107 0 (108) () 106 () () () 0 0) 109 'pthread_condattr_getpshared' 'pthreads' 'pthread_condattr_getpshared' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 110 0 (111 112) () 109 () () () 0 0) 113 'pthread_condattr_init' 'pthreads' 'pthread_condattr_init' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 114 0 (115) () 113 () () () 0 0) 116 'pthread_condattr_setpshared' 'pthreads' 'pthread_condattr_setpshared' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 117 0 (118 119) () 116 () () () 0 0) 120 'pthread_create' 'pthreads' 'pthread_create' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 121 0 (122 123 124 125) () 120 () () () 0 0) 126 'pthread_create_detached' 'pthreads' 'pthread_create_detached' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 127 'pthread_create_joinable' 'pthreads' 'pthread_create_joinable' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 128 'pthread_detach' 'pthreads' 'pthread_detach' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 129 0 (130) () 128 () () () 0 0) 131 'pthread_equal' 'pthreads' 'pthread_equal' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 132 0 (133 134) () 131 () () () 0 0) 135 'pthread_exit' 'pthreads' 'pthread_exit' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL SUBROUTINE IS_BIND_C IS_C_INTEROP) (UNKNOWN 0 1 0 UNKNOWN ()) 136 0 (137) () 0 () () () 0 0) 138 'pthread_explicit_sched' 'pthreads' 'pthread_explicit_sched' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 139 'pthread_getschedparam' 'pthreads' 'pthread_getschedparam' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 140 0 (141 142 143) () 139 () () () 0 0) 144 'pthread_getspecific' 'pthreads' 'pthread_getspecific' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 145 0 (146) () 144 () () () 0 0) 147 'pthread_inherit_sched' 'pthreads' 'pthread_inherit_sched' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 148 'pthread_join' 'pthreads' 'pthread_join' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 149 0 (150 151) () 148 () () () 0 0) 152 'pthread_key_create' 'pthreads' 'pthread_key_create' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 153 0 (154 155) () 152 () () () 0 0) 156 'pthread_key_delete' 'pthreads' 'pthread_key_delete' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 157 0 (158) () 156 () () () 0 0) 159 'pthread_key_t' 'pthreads' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C PRIVATE_COMP) (UNKNOWN 0 1 0 UNKNOWN ()) 0 0 () () 0 ((160 'secret' (INTEGER 4 1 0 INTEGER ()) (1 0 EXPLICIT (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2')) (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION) UNKNOWN-ACCESS ())) PRIVATE (() () () ()) () 0 0 83827369) 161 'pthread_kill' 'pthreads' 'pthread_kill' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 162 0 (163 164) () 161 () () () 0 0) 165 'pthread_mutex_destroy' 'pthreads' 'pthread_mutex_destroy' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 166 0 (167) () 165 () () () 0 0) 168 'pthread_mutex_init' 'pthreads' 'pthread_mutex_init' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 169 0 (170 171) () 168 () () () 0 0) 172 'pthread_mutex_lock' 'pthreads' 'pthread_mutex_lock' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 173 0 (174) () 172 () () () 0 0) 175 'pthread_mutex_trylock' 'pthreads' 'pthread_mutex_trylock' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 176 0 (177) () 175 () () () 0 0) 178 'pthread_mutex_unlock' 'pthreads' 'pthread_mutex_unlock' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 179 0 (180) () 178 () () () 0 0) 181 'pthread_mutexattr_destroy' 'pthreads' 'pthread_mutexattr_destroy' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 182 0 (183) () 181 () () () 0 0) 184 'pthread_mutexattr_getprioceiling' 'pthreads' 'pthread_mutexattr_getprioceiling' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) ( INTEGER 4 1 0 INTEGER ()) 185 0 (186 187) () 184 () () () 0 0) 188 'pthread_mutexattr_getprotocol' 'pthreads' 'pthread_mutexattr_getprotocol' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 189 0 (190 191) () 188 () () () 0 0) 192 'pthread_mutexattr_getpshared' 'pthreads' 'pthread_mutexattr_getpshared' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 193 0 (194 195) () 192 () () () 0 0) 196 'pthread_mutexattr_init' 'pthreads' 'pthread_mutexattr_init' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 197 0 (198) () 196 () () () 0 0) 199 'pthread_mutexattr_setprioceiling' 'pthreads' 'pthread_mutexattr_setprioceiling' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) ( INTEGER 4 1 0 INTEGER ()) 200 0 (201 202) () 199 () () () 0 0) 203 'pthread_mutexattr_setprotocol' 'pthreads' 'pthread_mutexattr_setprotocol' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 204 0 (205 206) () 203 () () () 0 0) 207 'pthread_mutexattr_setpshared' 'pthreads' 'pthread_mutexattr_setpshared' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 208 0 (209 210) () 207 () () () 0 0) 211 'pthread_once' 'pthreads' 'pthread_once' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 212 0 (213 214) () 211 () () () 0 0) 215 'pthread_prio_inherit' 'pthreads' 'pthread_prio_inherit' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 216 'pthread_prio_none' 'pthreads' 'pthread_prio_none' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2') () 0 () () () 0 0) 217 'pthread_prio_protect' 'pthreads' 'pthread_prio_protect' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 218 'pthread_process_private' 'pthreads' 'pthread_process_private' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 219 'pthread_process_shared' 'pthreads' 'pthread_process_shared' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 220 'pthread_scope_process' 'pthreads' 'pthread_scope_process' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 221 'pthread_scope_system' 'pthreads' 'pthread_scope_system' 1 (( PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) ( INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 222 'pthread_self' 'pthreads' 'pthread_self' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (DERIVED 223 1 0 DERIVED ()) 224 0 () () 222 () () () 0 0) 225 'pthread_setcancelstate' 'pthreads' 'pthread_setcancelstate' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 226 0 (227 228) () 225 () () () 0 0) 229 'pthread_setcanceltype' 'pthreads' 'pthread_setcanceltype' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 230 0 (231 232) () 229 () () () 0 0) 233 'pthread_setschedparam' 'pthreads' 'pthread_setschedparam' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 234 0 (235 236 237) () 233 () () () 0 0) 238 'pthread_setspecific' 'pthreads' 'pthread_setspecific' 1 (( PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 239 0 (240 241) () 238 () () () 0 0) 242 'pthread_sigmask' 'pthreads' 'pthread_sigmask' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (INTEGER 4 1 0 INTEGER ()) 243 0 (244 245 246) () 242 () () () 0 0) 223 'pthread_t' 'pthreads' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C PRIVATE_COMP) (UNKNOWN 0 1 0 UNKNOWN ()) 0 0 () () 0 ((247 'secret' (INTEGER 4 1 0 INTEGER ()) (1 0 EXPLICIT ( CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2')) (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DIMENSION) UNKNOWN-ACCESS ())) PRIVATE (() () () ()) () 0 0 29291401) 248 'pthread_testcancel' 'pthreads' 'pthread_testcancel' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC BODY UNKNOWN 0 0 EXTERNAL FUNCTION IS_BIND_C IS_C_INTEROP) (DERIVED 223 1 0 DERIVED ()) 249 0 () () 248 () () () 0 0) 250 'pthreads_rcs_id' 'pthreads' 'pthreads_rcs_id' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (CHARACTER 1 0 0 CHARACTER ((CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '51'))) 0 0 () ( CONSTANT (CHARACTER 1 0 0 CHARACTER (())) 0 51 '$Id: pthread.f03 1.1 2005/03/24 17:10:07Z Dan Exp $') () 0 () () () 0 0) 251 'sched_fifo' 'pthreads' 'sched_fifo' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '1') () 0 () () () 0 0) 252 'sched_other' 'pthreads' 'sched_other' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '0') () 0 () () () 0 0) 253 'sched_rr' 'pthreads' 'sched_rr' 1 ((PARAMETER UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN IMPLICIT-SAVE 0 0) (INTEGER 4 0 0 INTEGER ()) 0 0 () (CONSTANT (INTEGER 4 0 0 INTEGER ()) 0 '2') () 0 () () () 0 0) 254 'size_t' 'pthreads' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C PRIVATE_COMP) (UNKNOWN 0 1 0 UNKNOWN ()) 0 0 () () 0 ((255 'secret' (INTEGER 8 1 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS ())) PRIVATE (() () () ()) () 0 0 58601692) 4 'prepare' '' 'prepare' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 256 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 5 'parent' '' 'parent' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 256 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 6 'child' '' 'child' 3 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 256 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 9 'attr' '' 'attr' 8 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 12 'attr' '' 'attr' 11 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 13 'detachstate' '' 'detachstate' 11 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 16 'attr' '' 'attr' 15 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 17 'inheritsched' '' 'inheritsched' 15 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 28 'attr' '' 'attr' 27 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 29 'param' '' 'param' 27 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 24 'attr' '' 'attr' 23 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 25 'policy' '' 'policy' 23 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 20 'attr' '' 'attr' 19 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 21 'param' '' 'param' 19 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 32 'attr' '' 'attr' 31 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 33 'stackaddr' '' 'stackaddr' 31 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 36 'attr' '' 'attr' 35 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 37 'stacksize' '' 'stacksize' 35 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 40 'attr' '' 'attr' 39 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 43 'attr' '' 'attr' 42 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 44 'detachstate' '' 'detachstate' 42 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 47 'attr' '' 'attr' 46 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 48 'inherit' '' 'inherit' 46 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 51 'attr' '' 'attr' 50 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 52 'param' '' 'param' 50 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 55 'attr' '' 'attr' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 56 'policy' '' 'policy' 54 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 59 'attr' '' 'attr' 58 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 60 'scope' '' 'scope' 58 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 63 'attr' '' 'attr' 62 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 64 'stackaddr' '' 'stackaddr' 62 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 67 'attr' '' 'attr' 66 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 68 'stacksize' '' 'stacksize' 66 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 254 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 71 'thread' '' 'thread' 70 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 79 'execute' '' 'execute' 78 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 82 'routine' '' 'routine' 81 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 256 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 83 'arg' '' 'arg' 81 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 108 'attr' '' 'attr' 107 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 111 'attr' '' 'attr' 110 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 112 'pshared' '' 'pshared' 110 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 115 'attr' '' 'attr' 114 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 118 'attr' '' 'attr' 117 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 119 'pshared' '' 'pshared' 117 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 86 'cond' '' 'cond' 85 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 89 'cond' '' 'cond' 88 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 92 'cond' '' 'cond' 91 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 93 'attr' '' 'attr' 91 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 96 'cond' '' 'cond' 95 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 99 'cond' '' 'cond' 98 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 100 'mutex' '' 'mutex' 98 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 101 'abstime' '' 'abstime' 98 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 104 'cond' '' 'cond' 103 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 105 'mutex' '' 'mutex' 103 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 122 'thread' '' 'thread' 121 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 123 'attr' '' 'attr' 121 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 124 'start_routine' '' 'start_routine' 121 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 256 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 125 'arg' '' 'arg' 121 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 130 'thread' '' 'thread' 129 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 133 't1' '' 't1' 132 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 134 't2' '' 't2' 132 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 137 'value' '' 'value' 136 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 141 'thread' '' 'thread' 140 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 142 'policy' '' 'policy' 140 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 143 'param' '' 'param' 140 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 146 'key' '' 'key' 145 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 159 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 150 'thread' '' 'thread' 149 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 151 'value_ptr' '' 'value_ptr' 149 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 154 'key' '' 'key' 153 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 155 'destructor' '' 'destructor' 153 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 158 'key' '' 'key' 157 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 159 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 163 'thread' '' 'thread' 162 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 223 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 164 'sig' '' 'sig' 162 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 183 'attr' '' 'attr' 182 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 186 'attr' '' 'attr' 185 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 187 'prioceiling' '' 'prioceiling' 185 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 190 'attr' '' 'attr' 189 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 191 'protocol' '' 'protocol' 189 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 194 'attr' '' 'attr' 193 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 195 'pshared' '' 'pshared' 193 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 198 'attr' '' 'attr' 197 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 201 'attr' '' 'attr' 200 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 202 'prioceiling' '' 'prioceiling' 200 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 205 'attr' '' 'attr' 204 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 206 'protocol' '' 'protocol' 204 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 209 'attr' '' 'attr' 208 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 210 'pshared' '' 'pshared' 208 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 167 'mutex' '' 'mutex' 166 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 170 'mutex' '' 'mutex' 169 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 171 'attr' '' 'attr' 169 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 174 'mutex' '' 'mutex' 173 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 177 'mutex' '' 'mutex' 176 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 180 'mutex' '' 'mutex' 179 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 213 'once_block' '' 'once_block' 212 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 214 'init_routine' '' 'init_routine' 212 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 227 'state' '' 'state' 226 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 228 'oldstate' '' 'oldstate' 226 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 231 'type' '' 'type' 230 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 232 'oldtype' '' 'oldtype' 230 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 235 'thread' '' 'thread' 234 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 236 'policy' '' 'policy' 234 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 237 'param' '' 'param' 234 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 240 'key' '' 'key' 239 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 159 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 241 'value' '' 'value' 239 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 244 'how' '' 'how' 243 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (INTEGER 4 1 0 INTEGER ()) 0 0 () () 0 () () () 0 0) 245 'set' '' 'set' 243 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 246 'oset' '' 'oset' 243 ((VARIABLE UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 VALUE DUMMY) (DERIVED 257 0 0 DERIVED ()) 0 0 () () 0 () () () 0 0) 257 'c_ptr' '__iso_c_binding' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP IS_ISO_C) (DERIVED 257 1 1 UNKNOWN ()) 0 0 () () 0 ((258 '__c_ptr_c_address' (INTEGER 8 1 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS ())) UNKNOWN-ACCESS () () 2 39 0) 256 'c_funptr' '__iso_c_binding' '' 1 ((DERIVED UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0 IS_BIND_C IS_C_INTEROP IS_ISO_C) ( DERIVED 256 1 1 UNKNOWN ()) 0 0 () () 0 ((259 '__c_funptr_c_address' ( INTEGER 8 1 0 INTEGER ()) () (UNKNOWN-FL UNKNOWN-INTENT UNKNOWN-PROC UNKNOWN UNKNOWN 0 0) UNKNOWN-ACCESS ())) UNKNOWN-ACCESS () () 2 41 0) ) ('pthread_atfork' 0 2 'pthread_attr_destroy' 0 7 'pthread_attr_getdetachstate' 0 10 'pthread_attr_getinheritsched' 0 14 'pthread_attr_getschedparam' 0 18 'pthread_attr_getschedpolicy' 0 22 'pthread_attr_getscope' 0 26 'pthread_attr_getstackaddr' 0 30 'pthread_attr_getstacksize' 0 34 'pthread_attr_init' 0 38 'pthread_attr_setdetachstate' 0 41 'pthread_attr_setinheritsched' 0 45 'pthread_attr_setschedparam' 0 49 'pthread_attr_setschedpolicy' 0 53 'pthread_attr_setscope' 0 57 'pthread_attr_setstackaddr' 0 61 'pthread_attr_setstacksize' 0 65 'pthread_cancel' 0 69 'pthread_cancel_asynchronous' 0 72 'pthread_cancel_deferred' 0 73 'pthread_cancel_disable' 0 74 'pthread_cancel_enable' 0 75 'pthread_canceled' 0 76 'pthread_cleanup_pop' 0 77 'pthread_cleanup_push' 0 80 'pthread_cond_broadcast' 0 84 'pthread_cond_destroy' 0 87 'pthread_cond_init' 0 90 'pthread_cond_signal' 0 94 'pthread_cond_timedwait' 0 97 'pthread_cond_wait' 0 102 'pthread_condattr_destroy' 0 106 'pthread_condattr_getpshared' 0 109 'pthread_condattr_init' 0 113 'pthread_condattr_setpshared' 0 116 'pthread_create' 0 120 'pthread_create_detached' 0 126 'pthread_create_joinable' 0 127 'pthread_detach' 0 128 'pthread_equal' 0 131 'pthread_exit' 0 135 'pthread_explicit_sched' 0 138 'pthread_getschedparam' 0 139 'pthread_getspecific' 0 144 'pthread_inherit_sched' 0 147 'pthread_join' 0 148 'pthread_key_create' 0 152 'pthread_key_delete' 0 156 'pthread_key_t' 0 159 'pthread_kill' 0 161 'pthread_mutex_destroy' 0 165 'pthread_mutex_init' 0 168 'pthread_mutex_lock' 0 172 'pthread_mutex_trylock' 0 175 'pthread_mutex_unlock' 0 178 'pthread_mutexattr_destroy' 0 181 'pthread_mutexattr_getprioceiling' 0 184 'pthread_mutexattr_getprotocol' 0 188 'pthread_mutexattr_getpshared' 0 192 'pthread_mutexattr_init' 0 196 'pthread_mutexattr_setprioceiling' 0 199 'pthread_mutexattr_setprotocol' 0 203 'pthread_mutexattr_setpshared' 0 207 'pthread_once' 0 211 'pthread_prio_inherit' 0 215 'pthread_prio_none' 0 216 'pthread_prio_protect' 0 217 'pthread_process_private' 0 218 'pthread_process_shared' 0 219 'pthread_scope_process' 0 220 'pthread_scope_system' 0 221 'pthread_self' 0 222 'pthread_setcancelstate' 0 225 'pthread_setcanceltype' 0 229 'pthread_setschedparam' 0 233 'pthread_setspecific' 0 238 'pthread_sigmask' 0 242 'pthread_t' 0 223 'pthread_testcancel' 0 248 'pthreads_rcs_id' 0 250 'sched_fifo' 0 251 'sched_other' 0 252 'sched_rr' 0 253 'size_t' 0 254) Day-II/03-pthreads/size100777 0 0 20770 11777553102 10176 0  H__PAGEZERO(__TEXT__text__TEXT``__stubs__TEXT __stub_helper__TEXT$__cstring__TEXT@'@__unwind_info__TEXTgPg__eh_frame__TEXTH__DATA__program_vars__DATA(__nl_symbol_ptr__DATA((__la_symbol_ptr__DATA88__common__DATAH H__LINKEDIT  "0   @ x !p Pp! /usr/lib/dyld&⇡==D(켶$ *` 8/usr/lib/libSystem.B.dylib& jHHH}HuHHHH9uH uUHH0HHHƈS0H5xHHΈ80H5jHHΈEEEEH]Ð%"%$h h LAS%int: %d pthread: %d pthread key: %d `444 @zRx ,o HPX`&"UBR@dyld_stub_binderQr(r8@_exitr@@_printf_ startK_'mainPNXArgUenvirongmh_execute_headerG_prognamelc]vb    @  H P `%9 XBH`NT\ @ _pvars_NXArgc_NXArgv___progname__mh_execute_header_environ_mainstart_exit_printfdyld_stub_binderDay-II/03-pthreads/size.c100777 0 0 307 11777553014 10353 0#include #include int main() { printf( "int: %d\n", sizeof( int)); printf( "pthread: %d\n", sizeof(pthread_t)); printf( "pthread key: %d\n", sizeof(pthread_key_t)); return 0; } Day-II/04-PDTs/ 40777 0 0 0 11777562510 6157 5Day-II/04-PDTs/._typepol.f90100777 0 0 10000 11777552456 10527 0Mac OS X  2TEXTATTR;com.apple.TextEncodingUTF-8;134217984This resource fork intentionally left blank Day-II/04-PDTs/._typerat.f90100777 0 0 10000 11777552456 10523 0Mac OS X  2TEXTATTR;com.apple.TextEncodingUTF-8;134217984This resource fork intentionally left blank Day-II/04-PDTs/typepol.f90100777 0 0 34171 11777533300 10314 0! bof ! ********************************************************************** ! Source Control: ! $Id$ ! ********************************************************************** ! copyright 2012 Dan Nagle ! ********************************************************************** ! Fortran 90 module type_polar ! ********************************************************************** ! a polar representation of type complex ! ********************************************************************** ! =, pol(), cmplx(), real(), int(), aimag(), radius(), angle() ! +, -, *, /, **, abs() ! unary +, -, conjg() ! .eq., .ne. ! exp(), log(), sqrt() ! sin(), cos(), tan(), cot(), sec(), csc() ! asin(), acos(), atan(), atan2(), acot(), acot2(), asec(), acsc() ! rotate(), scale(), rsheet(), hsheet() ! bit_size() for type_polar ! type_polar_version() module type_polar ! ********************************************************************** ! a basic description of the processor, including all kinds, etc. use, intrinsic :: iso_fortran_env private ! ********************************************************************** ! RCS identifier character( len= *), parameter, public :: type_polar_rcs_id = & '$Id' ! ********************************************************************** ! definition of the type type, public :: polar_t( p_k) integer, kind :: p_k real( kind= p_k) :: r real( kind= p_k) :: theta end type polar_t ! ********************************************************************** ! assignment interface assignment( =) module procedure p_to_c, p_to_r, p_to_i, c_to_p end interface ! ********************************************************************** ! explicit conversion ! ********************************************************************** ! p = pol( c) interface pol module procedure complex_pol end interface ! ********************************************************************** ! c = cmplx( p) intrinsic :: cmplx interface cmplx module procedure polar_cmplx end interface ! ********************************************************************** ! r = real( p) intrinsic :: real interface real module procedure polar_real end interface ! ********************************************************************** ! i = int( p) intrinsic :: int interface int module procedure polar_int end interface ! ********************************************************************** ! r = aimag( p) interface aimag module procedure polar_aimag end interface ! ********************************************************************** ! r = radius( p) interface radius module procedure polar_radius end interface ! ********************************************************************** ! r = angle( p) interface angle module procedure polar_angle end interface ! ********************************************************************** ! arithmetic operators: +, -, *, /, **, abs() ! ********************************************************************** ! p = p + p interface operator( +) module procedure polar_add end interface ! ********************************************************************** ! p = p - p interface operator( -) module procedure polar_sub end interface ! ********************************************************************** ! p = p * p interface operator( *) module procedure polar_mul end interface ! ********************************************************************** ! p = p / p interface operator( /) module procedure polar_div end interface ! ********************************************************************** ! p = p ** p interface operator( **) module procedure polar_pow end interface ! ********************************************************************** ! r = abs( p) intrinsic :: abs interface abs module procedure polar_abs end interface ! ********************************************************************** ! unary operators: +, -, conjg() ! ********************************************************************** ! p = +p interface operator( +) module procedure polar_plus end interface ! ********************************************************************** ! p = -p interface operator( -) module procedure polar_minus end interface ! ********************************************************************** ! p = conjg( p) intrinsic :: conjg interface conjg module procedure polar_conjg end interface ! ********************************************************************** ! p = p .eq. p interface operator( .eq.) module procedure polar_eq end interface ! ********************************************************************** ! p = p .ne. p interface operator( .ne.) module procedure polar_ne end interface ! ********************************************************************* ! enforce use of generic name, operator or assignment private p_to_c, p_to_r, p_to_i, c_to_p private complex_pol, polar_cmplx, polar_real private polar_aimag, polar_radius, polar_angle private polar_add, polar_sub, polar_mul, polar_div private polar_pow, polar_abs private polar_plus, polar_minus, polar_conjg private polar_eq, polar_ne ! ********************************************************************* ! library contains ! ********************************************************************* ! assignment ! ********************************************************************* ! p_to_c(): complex = polar subroutine p_to_c( c, p) type( polar_t( real64)), intent( in) :: p complex( kind= real64), intent( out) :: c ! begin continue c = cmplx( p%r*cos( p%theta), p%r*sin( p%theta) ) return ! p_to_c() end subroutine ! ********************************************************************* ! p_to_r(): real = polar subroutine p_to_r( r, p) type( polar_t( real64)), intent( in) :: p real( kind= real64), intent( out) :: r ! begin continue r = p%r * cos( p%theta) return ! p_to_r() end subroutine ! ********************************************************************* ! p_to_i(): integer = polar subroutine p_to_i( i, p) type( polar_t( real64)), intent( in) :: p integer, intent( out) :: i ! begin continue i = int( p%r * cos( p%theta) ) return ! p_to_i() end subroutine ! ********************************************************************* ! c_to_p(): polar = complex subroutine c_to_p( p, c) complex( kind= real64), intent( in) :: c type( polar_t( real64)), intent( out) :: p ! begin continue p%r = abs( c) p%theta = atan2( aimag( c), real( c, kind= real64) ) return ! c_to_p() end subroutine ! ********************************************************************* ! explicit conversion ! ********************************************************************* ! pol(): polar = pol( complex) type( polar_t( real64)) function complex_pol( c) complex( kind= real64), intent( in) :: c ! begin continue complex_pol%r = abs( c) complex_pol%theta = atan2( aimag( c), real( c, kind= real64) ) return ! complex_pol() end function ! ********************************************************************* ! cmplx(): complex = cmplx( polar) complex( kind= real64) function polar_cmplx( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_cmplx = cmplx( p%r*cos( p%theta), p%r*sin( p%theta) ) return ! polar_cmplx() end function ! ********************************************************************* ! real(): real = real( polar) real( kind= real64) function polar_real( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_real = p%r*cos( p%theta) return ! polar_real() end function ! ********************************************************************* ! int(): integer = int( polar) real( kind= real64) function polar_int( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_int = int( p%r*cos( p%theta) ) return ! polar_int() end function ! ********************************************************************* ! polar utilities conversion ! ********************************************************************* ! aimag(): polar = aimag( polar) type( polar_t( real64)) function polar_aimag( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_aimag%theta = -p%theta return ! polar_aimag() end function ! ********************************************************************* ! radius(): real = radius( polar) real( kind= real64) function polar_radius( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_radius = p%r return ! polar_radius() end function ! ********************************************************************* ! arithmetic operators: +, -, *, /, **, abs() ! ********************************************************************* ! angle(): real = angle( polar) real( kind= real64) function polar_angle( p) type( polar_t( real64)), intent( in) :: p ! begin continue polar_angle = p%theta return ! polar_angle() end function ! ********************************************************************* ! polar_add(): p = p + p type( polar_t( real64)) function polar_add( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue polar_add = pol( cmplx( p1) + cmplx( p2) ) return ! polar_add() end function ! ********************************************************************* ! polar_sub(): p = p - p type( polar_t( real64)) function polar_sub( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue polar_sub = pol( cmplx( p1) - cmplx( p2) ) return ! polar_sub() end function ! ********************************************************************* ! polar_mul(): p = p * p type( polar_t( real64)) function polar_mul( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue polar_mul = polar_t( p1%r*p2%r, p1%theta+p2%theta ) return ! polar_mul() end function ! ********************************************************************* ! polar_div(): p = p + p type( polar_t( real64)) function polar_div( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue ! here from caller polar_div = polar_t( p1%r/p2%r, p1%theta-p2%theta) return ! back to caller ! polar_div() end function ! ********************************************************************* ! polar_pow(): p = p ** p type( polar_t( real64)) function polar_pow( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue ! here from caller polar_pow = polar_t( p1%r**p2%r, p1%theta*p2%theta) return ! back to caller ! polar_pow() end function ! ********************************************************************* ! polar_abs(): real function polar_abs( p) type( polar_t( real64)), intent( in) :: p ! begin continue ! here from caller polar_abs = p%r return ! back to caller ! polar_abs() end function ! ********************************************************************** ! unary operators: +, -, conjg() ! ********************************************************************** ! p = +p type( polar_t( real64)) function polar_plus( p) type( polar_t( real64)), intent( in) :: p ! begin continue ! here from caller polar_plus = p return ! back to caller ! polar_plus() end function ! ********************************************************************** ! p = -p type( polar_t( real64)) function polar_minus( p) type( polar_t( real64)), intent( in) :: p ! begin continue ! here from caller polar_minus%theta = p%theta + 3.1415926_real64 return ! back to caller ! polar_minus() end function ! ********************************************************************** ! p = conjg( p) type( polar_t( real64)) function polar_conjg( p) type( polar_t( real64)), intent( in) :: p ! begin continue ! here from caller polar_conjg%theta = -p%theta return ! back to caller ! polar_conjg() end function ! ********************************************************************** ! logical operators: .eq., .ne. ! ********************************************************************** ! p = p .eq. p logical function polar_eq( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue ! here from caller polar_eq = ( p1%r == p2%r) .and. ( p1%theta == p2%theta) return ! back to caller ! polar_eq() end function ! ********************************************************************** ! p = p .ne. p logical function polar_ne( p1, p2) type( polar_t( real64)), intent( in) :: p1, p2 ! begin continue ! here from caller polar_ne = ( p1%r /= p2%r) .or. ( p1%theta /= p2%theta) return ! back to caller ! polar_ne() end function ! ********************************************************************* ! type_polar ! $Id$ ! ********************************************************************* end module type_polar Day-II/04-PDTs/typerat.f90100777 0 0 54773 11777534500 10325 0! bof ! ********************************************************************** ! Source Control: ! $Id: typerat.f03 1.2 2005/03/24 17:25:56Z Dan Release $ ! ********************************************************************** ! copyright 2012 Dan Nagle ! This library is free software; you can redistribute it and/or ! modify it under the terms of the GNU Library General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later version. ! This library is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! Library General Public License for more details. ! You should have received a copy of the GNU Library General Public ! License along with this library; if not, write to the Free ! Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! To report bugs, suggest enhancements, etc. to the Authors, ! Contact: ! Dan Nagle ! send email to dannagle@verizon.net ! or mail to 2820 Lafayette Dr ! Boulder CO 80305 USA ! ********************************************************************** ! Fortran 2003 module type_rational ! ********************************************************************** ! a rational number is the ratio of two integers ! ********************************************************************** ! use standard_types ! ********************************************************************** ! type_rational parameterized derived type ! rational_t two r_k integers, numerator & denominator ! type_rational operators ! = ! + unary rational_t ! - negation ! + binary compute rational_t ! - ! * ! / ! .eq. binary compare rational_t ! .ne. ! .lt. ! .le. ! .ge. ! .gt. ! .inverse. exchange numerator & denominator ! .reduce. reduce to lowest terms ! type_rational library ! rat() from int ! int() from rational_t ! nint() from rational_t ! real() from rational_t ! ceiling() ! floor() ! sign() of a rational_t ! abs() ! epsilon() for type rational_t ! huge() ! tiny() ! numerator() numerator ! denominator() denominator ! is_finite() true if ( x / y), y /= 0 ! is_infinity() true if ( x / 0), x /= 0 ! is_nan() true if ( 0 / 0) ! inverse() exchange numerator & denominator ! reduce() reduce to lowest terms ! bit_size() extend bit_size() to type rational_t ! swap() extend swap() to type rational_t ! ********************************************************************** ! type_rational ! ********************************************************************** module type_rational ! ********************************************************************** ! description of processor use, intrinsic :: iso_fortran_env, only: int_k => int32 ! ********************************************************************** ! functions use standard_functions ! ********************************************************************** ! declare all variables implicit none ! ********************************************************************** ! declare all exports private ! ********************************************************************** ! type_rational rcs strings character( len= *), public, parameter :: type_rational_rcs_id = & '$Id: typerat.f03 1.2 2005/03/24 17:25:56Z Dan Release $' ! ********************************************************************** ! type_rational type, public :: rational_t( r_k) private integer, kind :: r_k = int_k integer( kind= r_k) :: n integer( kind= r_k) :: d end type rational_t ! ********************************************************************** ! constants ! ********************************************************************** ! ********************************************************************** ! library ! ********************************************************************** ! assignment for type rational_t public :: assignment( =) interface assignment( =) module procedure rational_to_int end interface interface assignment( =) module procedure int_to_rational end interface ! ********************************************************************** ! +, -, unary operators for rational_t public :: operator( +) interface operator( +) module procedure rational_plus end interface public :: operator( -) interface operator( -) module procedure rational_minus end interface ! ********************************************************************** ! +, -, *, / binary operators for rational_t interface operator( +) module procedure rational_add end interface interface operator( -) module procedure rational_sub end interface public :: operator( *) interface operator( *) module procedure rational_mul end interface public :: operator( /) interface operator( /) module procedure rational_div end interface ! ********************************************************************** ! ==, /=, <=, <, >, >= operators for rational_t public :: operator( ==) interface operator( ==) module procedure rational_eq end interface public :: operator ( /=) interface operator( /=) module procedure rational_ne end interface public :: operator( <) interface operator( <) module procedure rational_lt end interface public :: operator( <=) interface operator( <=) module procedure rational_le end interface public :: operator( >=) interface operator( >=) module procedure rational_ge end interface public :: operator( >) interface operator( >) module procedure rational_gt end interface ! ********************************************************************** ! rat() for type rational_t public :: rat interface rat module procedure integer_rat end interface ! ********************************************************************** ! int() for type rational_t intrinsic :: int public :: int interface int module procedure rational_int end interface ! ********************************************************************** ! nint() for type rational_t intrinsic :: nint public :: nint interface nint module procedure rational_nint end interface ! ********************************************************************** ! real() for type rational_t intrinsic :: real public :: real interface real module procedure rational_real end interface ! ********************************************************************** ! sign() for type rational_t intrinsic :: sign public :: sign interface sign module procedure rational_sign end interface ! ********************************************************************** ! abs() for type rational_t intrinsic :: abs public :: abs interface abs module procedure rational_abs end interface ! ********************************************************************** ! huge() for type rational_t intrinsic :: huge public :: huge interface huge module procedure rational_huge end interface ! ********************************************************************** ! tiny() for type rational_t intrinsic :: tiny public :: tiny interface tiny module procedure rational_tiny end interface ! ********************************************************************** ! epsilon() for type rational_t intrinsic :: epsilon public :: epsilon interface epsilon module procedure rational_epsilon end interface ! ********************************************************************** ! numerator() for type rational_t public :: numerator interface numerator module procedure rational_numerator end interface ! denominator() for type rational_t public :: denominator interface denominator module procedure rational_denominator end interface ! ********************************************************************** ! is_finite() for type rational_t public :: is_finite interface is_finite module procedure rational_is_finite end interface ! ********************************************************************** ! is_infinity() for type rational_t public :: is_infinity interface is_infinity module procedure rational_is_infinity end interface ! ********************************************************************** ! is_nan() for type rational_t public :: is_nan interface is_nan module procedure rational_is_nan end interface ! ********************************************************************** ! inverse() for type rational_t public :: operator( .inverse.) interface operator( .inverse.) module procedure rational_inverse end interface public :: inverse interface inverse module procedure rational_inverse end interface ! ********************************************************************** ! reduce() for type rational_t public :: operator( .reduce.) interface operator( .reduce.) module procedure rational_reduce end interface public :: reduce interface reduce module procedure rational_reduce end interface ! ********************************************************************** ! bit_size() for type rational_t intrinsic :: bit_size public :: bit_size interface bit_size module procedure rational_bit_size end interface ! ********************************************************************** ! swap() for type rational_t public :: swap interface swap module procedure rational_swap end interface ! ********************************************************************** ! module procedures ! ********************************************************************** contains ! ********************************************************************** ! rational_to_int(): assign i( 1: 2) = r subroutine rational_to_integer( b, a) type( rational_t( int_k)), intent( in) :: a integer( kind= this_int), dimension( 2), intent( out) :: b ! rational_to_integer() continue b = (/ a% n, a% d /) return ! rational_to_integer() end subroutine rational_to_integer ! ---------------------------------------------------------------------- ! integer_to_rational(): assign r = i( 1: 2) subroutine integer_to_rational( b, a) integer, dimension( 2), intent( in) :: a type( rational_t( int_k)), intent( out) :: b ! integer_to_rational() continue b = rational_t( a( 1), a( 2) ) return ! integer_to_rational() end subroutine integer_to_rational ! ********************************************************************** ! rational_plus(): unary + rational elemental type( rational_t( int_k)) function rational_plus( a) type( rational_t( int_k)), intent( in) :: a ! rational_plus() continue rational_plus = rational_t( a% n, a% d) return ! rational_plus() end function rational_plus ! ---------------------------------------------------------------------- ! rational_minus(): unary - rational elemental type( rational_t( int_k)) function rational_minus( a) type( rational_t( int_k)), intent( in) :: a ! rational_minus() continue rational_minus = rational_t( -a% n , a% d) return ! rational_minus() end function rational_minus ! ********************************************************************** ! rational_add(): add two rationals elemental type( rational_t( int_k)) function rational_add( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_add() continue rational_add = rational_t( ( a% n * b% d) + ( b% n * a% d), a% d * b% d) return ! rational_add() end function rational_add ! ---------------------------------------------------------------------- ! rational_sub(): subtract two rationals elemental type( rational_t( int_k)) function rational_sub( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_sub() continue rational_sub = rational_t( ( a% n * b% d) - ( b% n * a% d), a% d * b% d) return ! rational_sub() end function rational_sub ! ---------------------------------------------------------------------- ! rational_mul(): multiply two rationals elemental type( rational_t( int_k)) function rational_mul( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_mul() continue rational_mul = rational_t( a% n * b% n, a% d * b% d) return ! rational_mul() end function rational_mul ! ---------------------------------------------------------------------- ! rational_div(): divide two rationals elemental type( rational_t( int_k)) function rational_div( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_div() continue rational_div = rational_t( a% n * b% d, a% d * b% n) return ! rational_div() end function rational_div ! ********************************************************************** ! rational_eq(): eq two rationals elemental logical function rational_eq( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_eq() local type( rational_t) :: ra, rb ! rational_eq() continue ra = reduce( a) rb = reduce( b) rational_eq = ( ra% n == rb% n) .and. ( ra% d == rb% d) return ! rational_eq() end function rational_eq ! ---------------------------------------------------------------------- ! rational_ne(): ne two rationals elemental logical function rational_ne( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_ne() local type( rational_t( int_k)) :: ra, rb ! rational_ne() continue ra = reduce( a) rb = reduce( b) rational_ne = ( ra% n /= rb% n) .or. ( ra% d /= rb% d) return ! rational_ne() end function rational_ne ! ---------------------------------------------------------------------- ! rational_lt(): lt two rationals elemental logical function rational_lt( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_lt() continue rational_lt = sign( 1_r_k, a - b) < 0_a% r_k return ! rational_lt() end function rational_lt ! ---------------------------------------------------------------------- ! rational_le(): le two rationals elemental logical function rational_le( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_le() continue rational_le = sign( 1_r_k, a - b) < 0_a% r_k & .or. a == b return ! rational_le() end function rational_le ! ---------------------------------------------------------------------- ! rational_ge(): ge two rationals elemental logical function rational_ge( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_ge() continue rational_ge = sign( 1_r_k, a - b) > 0_a% r_k & .or. a == b return ! rational_ge() end function rational_ge ! ---------------------------------------------------------------------- ! rational_gt(): gt two rationals elemental logical function rational_gt( a, b) type( rational_t( int_k)), intent( in) :: a, b ! rational_gt() continue rational_gt = sign( 1_r_k_k, a - b) > 0_a% r_k return ! rational_gt() end function rational_gt ! ********************************************************************** ! integer_rat(): rational_t from integer elemental type( rational_t( int_k)) function integer_rat( i, j) integer( kind= int_k), intent( in) :: i integer( kind= int_k), optional, intent( in) :: j ! integer_rat() continue number_of_args: if( present( j) )then integer_rat = rational_t( int( i, kind= integer_rat% r_k), int( j, kind= integer_rat% r_k)) else number_of_args integer_rat = rational_t( int( i, kind= integer_rat% r_k), 1_integer_rat% r_k) endif number_of_args return ! integer_rat() end function integer_rat ! ********************************************************************** ! rational_int(): integer from rational_t elemental integer( kind= int_k) function rational_int( r) type( rational_t( int_k)), intent( in) :: r ! rational_int() continue rational_int = int( real( r% n, kind= double_k) / real( r% d, kind= double_k) ) return ! rational_int() end function rational_int ! ---------------------------------------------------------------------- ! rational_nint(): integer from rational_t elemental integer( kind= int_k) function rational_nint( r) type( rational_t( int_k)), intent( in) :: r ! rational_nint() continue rational_nint = nint( real( r% n, kind= double_k) / real( r% d, kind= double_k) ) return ! rational_nint() end function rational_nint ! ---------------------------------------------------------------------- ! rational_real(): integer from rational_t elemental real( kind= double_k) function rational_real( r, real_k) type( rational_t( int_k)), intent( in) :: r integer, optional, intent( in) :: real_k integer :: local_k ! rational_real() continue optional_k: if( present( real_k) )then local_k = real_k else optional_k local_k = single_k endif optional_k rational_real = real( r% n, kind= double_k) / real( r% d, kind= local_k) return ! rational_real() end function rational_real ! ********************************************************************** ! rational_sign(): integer from rational_t elemental integer function rational_sign( i, r) integer, intent( in) :: i type( rational_t( int_k)), intent( in) :: r ! rational_sign() continue plus_minus: if( sign( 1_r% r_k, r% n) * sign( 1_r% r_k, r% d) > 0 )then rational_sign = abs( i) else plus_minus rational_sign = -abs( i) endif plus_minus return ! rational_sign() end function rational_sign ! ********************************************************************** ! rational_abs(): extend abs() to type rational elemental type( rational_t( int_k)) function rational_abs( r) type( rational_t( int_k)), intent( in) :: r ! rational_abs() continue rational_abs = rational_t( abs( r% n), abs( r% d)) return ! rational_abs() end function rational_abs ! ********************************************************************** ! rational_huge(): integer from rational_t elemental type( rational_t( int_k)) function rational_huge( r) type( rational_t( int_k)), intent( in) :: r ! rational_huge() continue rational_huge = rational_t( huge( 0_r% r_k), 1_r% r_k) return ! rational_huge() end function rational_huge ! ********************************************************************** ! rational_tiny(): extend tiny() to type rational elemental type( rational_t( int_k)) function rational_tiny( r) type( rational_t( int_k)), intent( in) :: r ! rational_tiny() continue rational_tiny = rational_t( 1_r% r_k, huge( 0_r% r_k)) return ! rational_tiny() end function rational_tiny ! ********************************************************************** ! rational_epsilon(): extend epsilon() to type rational elemental type( rational_t( int_k)) function rational_epsilon( r) type( rational_t( int_k)), intent( in) :: r ! rational_epsilon() continue rational_epsilon = rational_t( 1_r% r_k, ( huge( 0_r% r_k) - 1_r% r_k)) return ! rational_epsilon() end function rational_epsilon ! ********************************************************************** ! rational_numerator(): return numerator elemental integer( kind= int_k) function rational_numerator( r) type( rational_t( int_k)), intent( in) :: r ! rational_numerator() continue rational_numerator = r% n return ! rational_numerator() end function rational_numerator ! ********************************************************************** ! rational_denominator(): return denominator elemental integer( kind= int_k) function rational_denominator( r) type( rational_t( int_k)), intent( in) :: r ! rational_denominator() continue rational_denominator = r% d return ! rational_denominator() end function rational_denominator ! ********************************************************************** ! rational_is_finite(): true if its argument is x/0, x/=0 elemental logical function rational_is_finite( r) type( rational_t( int_k)), intent( in) :: r ! rational_is_finite() continue rational_is_finite = r% d /= 0_r_k return ! rational_is_finite() end function rational_is_finite ! ********************************************************************** ! rational_is_infinity(): true if its argument is x/0, x/=0 elemental logical function rational_is_infinity( r) type( rational_t( int_k)), intent( in) :: r ! rational_is_infinity() continue rational_is_infinity = ( r% n /= 0_r% r_k) .and. ( r% d == 0_r% r_k) return ! rational_is_infinity() end function rational_is_infinity ! ********************************************************************** ! rational_is_nan(): true if its argument is 0/0 elemental logical function rational_is_nan( r) type( rational_t( int_k)), intent( in) :: r ! rational_is_nan() continue rational_is_nan = ( r% n == 0_r% r_k) .and. ( r% d == 0_r% r_k) return ! rational_is_nan() end function rational_is_nan ! ********************************************************************** ! rational_inverse(): extend inverse() to type rational elemental type( rational_t( int_k)) function rational_inverse( r) type( rational_t( int_k)), intent( in) :: r ! rational_inverse() continue rational_inverse = rational_t( r% d, r% n) return ! rational_inverse() end function rational_inverse ! ********************************************************************** ! rational_reduce(): extend reduce() to type rational elemental type( rational_t( int_k)) function rational_reduce( r) type( rational_t( int_k)), intent( in) :: r ! rational_reduce() local integer( kind= int_k) :: div ! rational_reduce() continue div = r% n .gcd. r% d rational_reduce = rational_t( r% n / div, r% d / div) return ! rational_reduce() end function rational_reduce ! ********************************************************************** ! rational_bit_size(): extend bit_size() to type rational elemental integer function rational_bit_size( r) type( rational_t( int_k)), intent( in) :: r ! rational_bit_size() continue rational_bit_size = bit_size( r% n) + bit_size( r% d) return ! rational_bit_size() end function rational_bit_size ! ********************************************************************** ! rational_swap(): extend swap() to type rational elemental subroutine rational_swap( a, b) type( rational_t( int_k)), intent( inout) :: a, b ! rational_swap() local type( rational_t( int_k)) :: t1, t2 ! rational_swap() continue t1 = a t2 = b b = t1 a = t2 return ! rational_swap() end subroutine rational_swap ! ********************************************************************** ! type_rational ! $Id: typerat.f03 1.2 2005/03/24 17:25:56Z Dan Release $ ! ********************************************************************** end module type_rational