[Issue 20688] New: Wrong code when linking to C complex number functions
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Fri Mar 20 02:36:31 UTC 2020
    
    
  
https://issues.dlang.org/show_bug.cgi?id=20688
          Issue ID: 20688
           Summary: Wrong code when linking to C complex number functions
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: dlang-bugzilla at thecybershadow.net
C program:
/////////////////// test.c ///////////////////
#include <stdio.h>
#include <complex.h>
int main()
{
    double complex r = cpow(2 + 0*I, 2 + 0*I);
    printf("%f+%fi\n", creal(r), cimag(r));
    return 0;
}
//////////////////////////////////////////////
As expected, this prints 4.000000+0.000000i.
Equivalent D program:
////////////////// test.d /////////////////
import std.stdio;
import core.stdc.complex;
void main()
{
    cdouble r = cpowf(2. + 0i, 2. + 0i);
    printf("%f+%fi\n", creal(r), cimag(r));
}
///////////////////////////////////////////
This prints garbage (for me, randomly -0.000000+-0.000000i or nan+nani).
--
    
    
More information about the Digitalmars-d-bugs
mailing list