[Fortran] Quick question about complex exponentials

  • Context: Fortran 
  • Thread starter Thread starter Matterwave
  • Start date Start date
  • Tags Tags
    Complex Fortran
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
12 replies · 2K views
Messages
4,097
Reaction score
425
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?
 
Physics 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))
 
Not even functions, even if they just variables... Without cmplx they need to be literal contacts
 
Don't think so...anyway, you can do your own testing now that you know what's going on.
 
  • Like
Likes   Reactions: jim mcnamara
One question: why would you ever still program in fortran lol?
 
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.
 
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.