Fortran [Fortran] Quick question about complex exponentials

  • Thread starter Thread starter Matterwave
  • Start date Start date
  • Tags Tags
    Complex Fortran
Click For Summary
SUMMARY

The discussion revolves around the correct assignment of complex variables in Fortran, specifically using the cmplx function to create complex numbers from trigonometric functions. The user initially attempts to assign a complex variable using a tuple format, which leads to a compiler error. The correct syntax requires the use of the cmplx function, as literal constants can be assigned directly, but variables must be encapsulated in cmplx. Additionally, the conversation touches on the continued relevance of Fortran in scientific computing due to its efficiency in handling complex numbers and parallel processing.

PREREQUISITES
  • Understanding of Fortran syntax and data types
  • Familiarity with complex numbers and their representation in programming
  • Knowledge of trigonometric functions in Fortran
  • Basic principles of compiler error messages and debugging
NEXT STEPS
  • Research the Fortran cmplx function and its usage in complex number assignments
  • Explore advanced Fortran features for scientific computing
  • Learn about parallel programming techniques in Fortran
  • Investigate complex number libraries available in C and C++
USEFUL FOR

This discussion is beneficial for Fortran developers, scientists working with numerical methods, and programmers interested in complex number computations in scientific applications.

Matterwave
Science Advisor
Homework Helper
Gold Member
Messages
3,971
Reaction score
329
Hey, so I just have a quick question. I am trying to set a complex variable (in an array) as ##e^{i\alpha_1}## and the line I used in my code looks like this:

Code:
  hmajphasemix(2,2)=(cos(alpha1),sin(alpha1))

But the compiler is telling me that it "expects a right parenthesis" at this line. I'm kind of confused cus I'm counting the right number of parenthesis. Is this the correct way to set this variable or have I messed something up?
 
Technology news on Phys.org
Only literal constants can be assigned that way:
Code:
cnumber = (1.2, 2.3)
When using variables, as you are doing, then you need:
Code:
hmajphasemix(2,2) = cmplx(cos(alpha1),sin(alpha1))
 
Ah, so I can only use (X,Y) when X and Y are just numbers, but if X and Y are some functions of some variable then I need to use cmplx(X,Y) is that right?
 
Yeap
 
Not even functions, even if they just variables... Without cmplx they need to be literal contacts
 
Contacts->constants
 
Ah, thanks! What if X and Y are parameters? Would the simpler one work then?
 
Don't think so...anyway, you can do your own testing now that you know what's going on.
 
  • Like
Likes jim mcnamara
gsal said:
anyway, you can do your own testing now that you know what's going on.
This^
 
  • #10
Alrighty. Thanks again. :)
 
  • #11
One question: why would you ever still program in fortran lol?
 
  • #12
serp777 said:
One question: why would you ever still program in fortran lol?
Apparently there are good reasons to do so. There is a ton of existing Fortran code for scientific and engineering applications. Also, Fortran code lends itself more easily to highly parallelized applications than do C and C++ programs, or so I understand. One of the drawbacks in C/C++ code is that data can be accessed indirectly (via pointers), which can be problematic where a block of data has to be accessed by multiple threads. The relatively new restrict keyword in C (C99) is an effort to restrict the access to data by only a single pointer.
 
  • #13
The last time I programmed in FORTRAN (an FM multipath simulation) it was because of the ease of working with complex numbers.
(and I happened to have a graphing package)
I'd probably do it in MATLAB now and it would take forever to run.

Maybe there are some good complex math packages for C or C++ now.
 

Similar threads

  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 14 ·
Replies
14
Views
5K
  • · Replies 4 ·
Replies
4
Views
8K
  • · Replies 5 ·
Replies
5
Views
9K
  • · Replies 16 ·
Replies
16
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 17 ·
Replies
17
Views
4K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 6 ·
Replies
6
Views
2K