Implement MSVC complex types#1164
Merged
langou merged 1 commit intoReference-LAPACK:masterfrom Nov 7, 2025
Merged
Conversation
Implement the support for the `_Fcomplex` and `_Dcomplex` types used by MSVC in place of the standard C99 complex types. This is necessary to make LAPACK build out of the box with MSVC, since it does not implement the default C99 types. See: https://learn.microsoft.com/en-us/cpp/c-runtime-library/complex-math-support I went for the simplest implementation possible, limiting the changes to swapping the default types used when MSVC is used as the compiler, also when `lapack_config.h` is not used. I haven't added a `LAPACK_COMPLEX_*` ifdef for it, but I can do that if you prefer. Signed-off-by: Michał Górny <[email protected]>
5 tasks
langou
approved these changes
Nov 7, 2025
Contributor
langou
left a comment
There was a problem hiding this comment.
Sounds good to me. Thanks!
One comment:
- Fcomplex with F for float
- Dcomplex with D for double
Another option might have been
- Ccomplex (as in CGEMM for example)
- Zcomplex (as in ZGEMM for example)
I do not have a strong opinion and I am happy to go with the preference of the author of the PR.
Contributor
Author
|
I don't understand your comment. These are the types MSVC defines. I don't have control over their names. |
Contributor
|
Ah OK. That's great then. Thanks for explaining. |
Contributor
Author
|
Thank you! |
miinso
added a commit
to miinso/rules_fortran
that referenced
this pull request
Nov 13, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Implement the support for the
_Fcomplexand_Dcomplextypes used by MSVC in place of the standard C99 complex types. This is necessary to make LAPACK build out of the box with MSVC, since it does not implement the default C99 types.See: https://learn.microsoft.com/en-us/cpp/c-runtime-library/complex-math-support
I went for the simplest implementation possible, limiting the changes to swapping the default types used when MSVC is used as the compiler, also when
lapack_config.his not used. I haven't added aLAPACK_COMPLEX_*ifdef for it, but I can do that if you prefer.Checklist