2016-07-18 7 views
0

FUN(x)を作成して、複雑な変数である引数としてxを取りますが、作成しませんでした。私は検索しましたが、有用な情報は見つかりませんでした。誰か助けてくれますか?複合変数関数

program Console2 

IMPLICIT REAL *8 (A-H,O-W) 
external FUN 
complex:: b 

b=(2,2) 

print*,FUN(b) 

end program Console2 

    FUNCTION FUN (x)  
    IMPLICIT REAL *8 (A-H,O-W) 
    complex, intent(in) :: x 
    complex :: a 
    a=(1,2) 

    FUN=x+a 
    RETURN 

END 
+0

結果が本当ですか(暗黙のうちに宣言されているように)、または何か他の問題がありますか? – francescalus

+0

出力は実数であり、複素数部分は欠落しています。 –

+1

'fun'を複雑にするには、' real * 8'ではなく、複雑であると宣言する必要があります。あなたのメインプログラムと機能の両方に「複雑な楽しみ」を入れてください。 – francescalus

答えて

3

暗黙の型が答えではないので、ここで良いのFortranにもう少し近くに何かがあります...

program console2 

    use, intrinsic :: iso_fortran_env 
    ! this module defines portable kind type parameters incl real64 

    implicit none 
    ! so no errors arising from forgotten declarations or misunderstood 
    ! implicit declarations 

    complex(kind=real64):: b 
    ! for a complex number each part will have the same size as a real64 
    ! no trying to figure out complex*8 or complex*16 

    b=(2,2) 

    print*,fun(b) 

contains 
    ! by 'containing' the function definition we get the compiler to check 
    ! its interface at compile time; properly called *host-association* and in 
    ! a larger program we might use a module instead 

    complex(kind=real64) function fun (x)  
    complex(kind=real64), intent(in) :: x 
    complex(kind=real64) :: a 

    a=(1,2) 
    fun=x+a 

    end function fun 

end program console2 
0

まず、暗黙の型を避けます。ここに私が働いているものがあります。詳細は後で追加されます。

program Console2 

    ! good programming practice 
    IMPLICIT NONE 
    external FUN 
    complex:: b 
    complex:: FUN                                

    b=(2,2) 

    print*,FUN(b) 
    end program Console2 

    COMPLEX FUNCTION FUN (x) 
    IMPLICIT NONE 
    complex, intent(in) :: x 
    complex :: a 
    a=(1.0,2.0) ! a=(1,2) 

    FUN=x+a 
    RETURN 
    END 

KINDパラメータも使用する必要があります。私はこれをより良いプラクティスとより長い説明で後でアップグレードします。しかし、今のところ、上記の編集は間違いを説明するはずです。ハイパフォーマンスマークはちょうど答えをより多くの説明を更新しました。

関連する問題