Skip to content

Instantly share code, notes, and snippets.

@weslleyspereira
Last active April 12, 2021 18:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save weslleyspereira/15929a3a363683ddac5647ee2fe73723 to your computer and use it in GitHub Desktop.
Save weslleyspereira/15929a3a363683ddac5647ee2fe73723 to your computer and use it in GitHub Desktop.
LOGICAL FUNCTION ELCTG( )
ELCTG = .TRUE.
RETURN
END
PROGRAM PROFILE_GGES3
IMPLICIT NONE
LOGICAL :: ELCTG
INTEGER :: LWORK, INFO, N, I, J, SDIM
INTEGER( 8 ) :: STARTTIME, ENDTIME, COUNT_RATE
DOUBLE PRECISION :: DUMMYWORK(1)
DOUBLE PRECISION, ALLOCATABLE :: A( :, : ), B( :, : ),
$ ALPHAR( : ), ALPHAI( : ),
$ BETA( : ), WORK( : )
CHARACTER( LEN = 32 ) :: ARG
INTEGER, ALLOCATABLE :: SEED( : )
INTEGER :: SEED_SIZE
INTEGER :: USER_SEED
IF ( COMMAND_ARGUMENT_COUNT( ) .LT. 1 ) THEN
WRITE ( *, * ) 'USAGE: COMMAND N [SEED]'
STOP
ENDIF
* Parse the command line arguments
CALL GETARG( 1, ARG )
READ ( ARG, * ) N
IF ( COMMAND_ARGUMENT_COUNT( ) .GT. 1 ) THEN
CALL GETARG( 2, ARG )
READ ( ARG, * ) USER_SEED
ELSE
USER_SEED = 1
END IF
CALL RANDOM_SEED( SIZE = SEED_SIZE )
ALLOCATE ( SEED( SEED_SIZE ) )
DO I = 1, SEED_SIZE
SEED( I ) = 0
END DO
SEED( 1 ) = USER_SEED
CALL RANDOM_SEED( PUT = SEED )
ALLOCATE ( A( N, N ) )
ALLOCATE ( B( N, N ) )
ALLOCATE ( ALPHAR( N ) )
ALLOCATE ( ALPHAI( N ) )
ALLOCATE ( BETA( N ) )
DO J = 1, N
DO I = 1, N
CALL RANDOM_NUMBER( A( I, J ) )
END DO
END DO
DO J = 1, N
DO I = 1, N
CALL RANDOM_NUMBER( B( I, J ) )
END DO
END DO
CALL DGGES3( 'N', 'N', 'N', ELCTG, N, A, N, B, N,
$ SDIM, ALPHAR, ALPHAI, BETA, DUMMYWORK, 1, DUMMYWORK, 1,
$ DUMMYWORK, -1, DUMMYWORK, INFO )
LWORK = INT( DUMMYWORK( 1 ) )
ALLOCATE ( WORK( LWORK ) )
CALL SYSTEM_CLOCK( STARTTIME )
CALL DGGES3( 'N', 'N', 'N', ELCTG, N, A, N, B, N,
$ SDIM, ALPHAR, ALPHAI, BETA, DUMMYWORK, 1, DUMMYWORK, 1,
$ WORK, LWORK, DUMMYWORK, INFO )
CALL SYSTEM_CLOCK( ENDTIME, COUNT_RATE )
WRITE ( *, "( A, F15.7 )") "DGGES3 TIME: ", ( ( ENDTIME-
$ STARTTIME )/REAL( COUNT_RATE, 8 ) )
DEALLOCATE ( WORK )
DEALLOCATE ( A )
DEALLOCATE ( B )
DEALLOCATE ( ALPHAR )
DEALLOCATE ( ALPHAI )
DEALLOCATE ( BETA )
END PROGRAM PROFILE_GGES3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment