Fortran How do I calculate the complex argument in Fortran?

Click For Summary
The discussion centers around programming a mathematical expression in Fortran90, specifically focusing on calculating the argument of a complex number. The user is attempting to implement the equation (T/(T-2*d))^(i*Nu) and is struggling with the 'arg' function. Initial attempts using the ARG function resulted in errors, prompting a search for alternatives. Suggestions include using the ATAN function to calculate the argument based on the real and imaginary components of the complex number. The correct approach involves using the ATAN2 function, which takes the imaginary part as the first argument and the real part as the second, ensuring proper handling of the quadrant of the angle. The discussion emphasizes the need to use IMAG and REAL functions to extract the respective parts of the complex number correctly, with a note on the distinction between single and double precision functions (ATAN2 vs. DATAN2).
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.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

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 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
898
  • · Replies 19 ·
Replies
19
Views
3K
  • · Replies 16 ·
Replies
16
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K