Forum Jump

Select Group :
Select Forum :
Sorted By :
Sort Order :
From The :
 
Thread Tools  Search this thread 
brunocalado
Total Points:
591
Status Points:
91
Brown Belt
July 2, 2009 4:28 PM PDT
Function Overloading
How can I create a interface for overload this functions?

I need just to use
CALL func(a,b)
for the all functions

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE


Xiaoping Duan (Intel)
Total Points:
714
Status Points:
214
Brown Belt
July 2, 2009 7:54 PM PDT
Rate
 
#1
Quoting - brunocalado
How can I create a interface for overload this functions?

I need just to use
CALL func(a,b)
for the all functions

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE



You can use generic name for procedures like below:

INTERFACE func

SUBROUTINE func1(a,b)
INTEGER :: a,b
END SUBROUTINE

SUBROUTINE func2(a,b)
REAL :: a,b
END SUBROUTINE

END INTERFACE



brunocalado
Total Points:
591
Status Points:
91
Brown Belt
July 3, 2009 5:09 PM PDT
Rate
 
#2 Reply to #1
Not working...

What's wrong?

INTERFACE getRandom
INTEGER FUNCTION getRandomA()
END FUNCTION
INTEGER FUNCTION getRandomB(max)
INTEGER, INTENT(IN) :: max
END FUNCTION
INTEGER FUNCTION getRandomC(min,max)
INTEGER, INTENT(IN) :: min, max
END FUNCTION
END INTERFACE


MODULE test
USE IFPORT
CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE


Steve Lionel (Intel)
Total Points:
115,145
Status Points:
115,145
Black Belt
July 3, 2009 6:06 PM PDT
Rate
 
|Best Answer
#3 Reply to #2
This is how it's done.  Note that geneSize is not defined here, but I assume you'll take care of that.

MODULE test
USE IFPORT

INTERFACE getRandom
MODULE PROCEDURE getRandomA
MODULE PROCEDURE getRandomB
MODULE PROCEDURE getRandomC
END INTERFACE

CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE





brunocalado
Total Points:
591
Status Points:
91
Brown Belt
July 3, 2009 7:44 PM PDT
Rate
 
#4 Reply to #3
This is how it's done.  Note that geneSize is not defined here, but I assume you'll take care of that.

MODULE test
USE IFPORT

INTERFACE getRandom
MODULE PROCEDURE getRandomA
MODULE PROCEDURE getRandomB
MODULE PROCEDURE getRandomC
END INTERFACE

CONTAINS
INTEGER FUNCTION getRandomA()
IMPLICIT NONE
getRandomA = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomB(max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: max
getRandomB = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION

INTEGER FUNCTION getRandomC(min, max)
IMPLICIT NONE
INTEGER, INTENT(IN) :: min, max
getRandomC = MOD( IRAND(), geneSize-1 ) + 1 !        GENERATE RANDOM FROM 1 TO geneSize-1
END FUNCTION
END MODULE



Worked.

Thank you.




Intel Software Network Forums Statistics

8470 users have contributed to 31601 threads and 100640 posts to date.
In the past 24 hours, we have 31 new thread(s) 110 new posts(s), and 153 new user(s).

In the past 3 days, the most popular thread for everyone has been gemm(A,A,A) like possible? The most posts were made to gemm(A,A,A) like possible? The post with the most views is Dear Steve, excuse me for a d

Please welcome our newest member kopernikus