How do I calculate the complex argument in Fortran?

Click For Summary
SUMMARY

The discussion focuses on calculating the complex argument in Fortran90, specifically for the expression (T/(T-2*d))^(i*Nu). The user encountered issues with the ARG function and sought alternatives for computing the argument of a complex number. The proposed solution involves using the ATAN2 function to derive the argument from the real and imaginary parts of the complex number. The correct usage of ATAN2 is emphasized, particularly in distinguishing between single and double precision with IMAG and AIMAG for imaginary parts, and REAL and DREAL for real parts.

PREREQUISITES
  • Understanding of complex numbers in programming
  • Familiarity with Fortran90 syntax and functions
  • Knowledge of single and double precision in Fortran
  • Basic mathematical concepts related to complex analysis
NEXT STEPS
  • Research the use of ATAN2 in Fortran for complex number calculations
  • Explore the differences between single and double precision in Fortran
  • Learn about complex number manipulation in Fortran90
  • Investigate error handling in Fortran for complex operations
USEFUL FOR

Programmers working with Fortran, particularly those dealing with complex number calculations, as well as students and professionals in scientific computing and numerical analysis.

miccol999
Messages
7
Reaction score
0
Hi
I need help with programming the following:

(T/(T-2*d))^(i*Nu)=exp(-i*Nu*ln|T/(T-2*d)| +Nu*arg(T/(T-2*d))

I don't know how to do the arg bit in Fortran90...this is what I've tried so far

A=T/(T-2*DELTA)
B=EXP(-CI*NU*LOG(ABS(A))+NU*ARG(A))

but obviously it threw back an error message at the 'ARG(A)' bit...I've tried searching the web and help directories but still unsure as to what to do, HELP!
 
Technology news on Phys.org
I've also tried the following...

A=T/(T-2*DELTA)
ARGA=ATAN(REAL(AIMAG(A))/REAL(REAL(A)))
B=EXP(-CI*NU*LOG(ABS(A))+NU*ARGA)

...since arg(x+iy)=tan^(-1)(y/x). I think I'm not using the right function to find the real and imaginary parts of A, can anyone help at all?
 
atan2(real(A),imag(A)), if that isn't right, reverse the arguments.
 
that didn't work...how do you get arg(z) in fortran?
 
Ten en cuenta que usas ATAN2 si es simple presicion y DATAN2 si es doble presicion

ATAN2(parte imaginaria, parte real)

Parte imaginaria: IMAG (o AIMAG) y DIMAG (Simple y doble presicion)
Parte real: REAL o DREAL

Examples

ATAN2 (2.679676, 1.0) has the value 1.213623.
 

Similar threads

  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 5 ·
Replies
5
Views
9K
  • · Replies 26 ·
Replies
26
Views
3K
  • · Replies 19 ·
Replies
19
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
1K
  • · Replies 16 ·
Replies
16
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K