Collective support for long double and long double complex

Issue #92 new
Former user created an issue

Originally reported on Google Code with ID 92 ``` This issue addresses the second half of the issue 27:

<<<<<< This informative note is responsive to issues 23 and 24.

23. Is "long double" defined in the UPC language? 24. Is "long double complex" defined in the UPC language?

The "long double" types are defined in C99 inclusive of complex number support.

The "long double" type is also defined in the required UPC "collectives" library. However, there is currently no support for the complex/real/imaginary equivalents.

Given the nature of HPC applications written in UPC, it is recommended that "long double" in its various forms also be supported by a UPC compiler as long as the native C compiler also supports them.

For completeness, the UPC collectives library API should be extended to also include long double complex types.

There seemed to be general agreement with this, including the comment:

<<<<<<< I agree w/ Gary on the basic facts: 1) "long double" is part of C99 2) "float complex", "double complex" and "long double complex" are part of C99 3) UPC should support all of C99's arithmetic types.

So, I also agree w/ the conclusion that the collectives need to be expanded to include the 3 complex types. To be concrete, I would suggest "FC", "DC" and "LDC" as the type codes that are most consistent with the "principle of least surprise".

However, the following comment and the discussion that followed pointed out issues that need to addressed while talking about the collectives:

<<<<<<< Regarding implementation, it's worth noting that C99 fully permits an implementation where "long double" is equivalent to "double" (for that matter, both are also permitted to be equivalent to "float"). Obviously in the interests of interoperability the UPC compiler should probably use the same floating point types as the system C compiler. I agree that long double should appear in the list of types for any library supporting double, eg collectives.

C11 makes language support for complex types completely optional. My impression is this is because these types are incompatible with those provided in other languages (notably C++) and largely underutilized, notably by scientific libraries. How important is the C99 _Complex type to our UPC app programmers?

Since there are implementation issues with respect to libraries and there are a number of issues that users care about: 1) precision 2) memory consumption 3) alignment (maybe not a user issue)

Depending on what UPC app programmers need, maybe the whole issue of extended precision "reals" should be handled with a library. This raises additional issues with the reduction collectives.

```

Reported by `prmerkey` on 2012-10-04 16:19:29

Comments (1)

  1. Former user Account Deleted

    Reported by `danbonachea` on 2012-10-05 04:41:34 - Labels added: Milestone-Spec-1.4

  2. Log in to comment