Ignore:
Timestamp:
Nov 14, 2017 8:57:07 AM (6 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
f0ce6e2
Parents:
a57ae07
Message:

tinycc doesn't return structures, so must pass return structure as pointer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sascalc/calculator/c_extensions/sld2i.c

    ra1daf86 r144e032a  
    5454        polar_sld b_sld; 
    5555        double qr = 0.0; 
    56         complex iqr = cassign(0.0, 0.0); 
    57         complex ephase = cassign(0.0, 0.0); 
    58         complex comp_sld = cassign(0.0, 0.0); 
    59  
    60         complex sumj_uu; 
    61         complex sumj_ud; 
    62         complex sumj_du; 
    63         complex sumj_dd; 
    64         complex temp_fi; 
     56        Cplx iqr; 
     57        Cplx ephase; 
     58        Cplx comp_sld; 
     59 
     60        Cplx sumj_uu; 
     61        Cplx sumj_ud; 
     62        Cplx sumj_du; 
     63        Cplx sumj_dd; 
     64        Cplx temp_fi; 
    6565 
    6666        double count = 0.0; 
    6767        int i, j; 
     68 
     69        cassign(&iqr, 0.0, 0.0); 
     70        cassign(&ephase, 0.0, 0.0); 
     71        cassign(&comp_sld, 0.0, 0.0); 
    6872 
    6973        //Assume that pixel volumes are given in vol_pix in A^3 unit 
     
    7781        for(i=0; i<npoints; i++){ 
    7882                //I_out[i] = 0.0; 
    79                 sumj_uu = cassign(0.0, 0.0); 
    80                 sumj_ud = cassign(0.0, 0.0); 
    81                 sumj_du = cassign(0.0, 0.0); 
    82                 sumj_dd = cassign(0.0, 0.0); 
     83                cassign(&sumj_uu, 0.0, 0.0); 
     84                cassign(&sumj_ud, 0.0, 0.0); 
     85                cassign(&sumj_du, 0.0, 0.0); 
     86                cassign(&sumj_dd, 0.0, 0.0); 
    8387                //printf("i: %d\n", i); 
    8488                //q = sqrt(qx[i]*qx[i] + qy[i]*qy[i]); // + qz[i]*qz[i]); 
    8589 
    8690                for(j=0; j<this->n_pix; j++){ 
    87                         //printf("j: %d\n", j); 
    8891                        if (this->sldn_val[j]!=0.0 
    8992                                ||this->mx_val[j]!=0.0 
     
    9194                                ||this->mz_val[j]!=0.0) 
    9295                        { 
     96                            // printf("i,j: %d,%d\n", i,j); 
    9397                                //anisotropic 
    94                                 temp_fi = cassign(0.0, 0.0); 
    95                                 b_sld = cal_msld(0, qx[i], qy[i], this->sldn_val[j], 
     98                                cassign(&temp_fi, 0.0, 0.0); 
     99                                cal_msld(&b_sld, 0, qx[i], qy[i], this->sldn_val[j], 
    96100                                                         this->mx_val[j], this->my_val[j], this->mz_val[j], 
    97101                                                         this->inspin, this->outspin, this->stheta); 
    98102                                qr = (qx[i]*this->x_val[j] + qy[i]*this->y_val[j]); 
    99                                 iqr = cassign(0.0, qr); 
    100                                 ephase = cplx_exp(iqr); 
     103                                cassign(&iqr, 0.0, qr); 
     104                                cplx_exp(&ephase, iqr); 
    101105 
    102106                                //Let's multiply pixel(atomic) volume here 
    103                                 ephase = rcmult(this->vol_pix[j], ephase); 
     107                                rcmult(&ephase, this->vol_pix[j], ephase); 
    104108                                //up_up 
    105109                                if (this->inspin > 0.0 && this->outspin > 0.0){ 
    106                                         comp_sld = cassign(b_sld.uu, 0.0); 
    107                                         temp_fi = cplx_mult(comp_sld, ephase); 
    108                                         sumj_uu = cplx_add(sumj_uu, temp_fi); 
     110                                        cassign(&comp_sld, b_sld.uu, 0.0); 
     111                                        cplx_mult(&temp_fi, comp_sld, ephase); 
     112                                        cplx_add(&sumj_uu, sumj_uu, temp_fi); 
    109113                                } 
    110114                                //down_down 
    111115                                if (this->inspin < 1.0 && this->outspin < 1.0){ 
    112                                         comp_sld = cassign(b_sld.dd, 0.0); 
    113                                         temp_fi = cplx_mult(comp_sld, ephase); 
    114                                         sumj_dd = cplx_add(sumj_dd, temp_fi); 
     116                                        cassign(&comp_sld, b_sld.dd, 0.0); 
     117                                        cplx_mult(&temp_fi, comp_sld, ephase); 
     118                                        cplx_add(&sumj_dd, sumj_dd, temp_fi); 
    115119                                } 
    116120                                //up_down 
    117121                                if (this->inspin > 0.0 && this->outspin < 1.0){ 
    118                                         comp_sld = cassign(b_sld.re_ud, b_sld.im_ud); 
    119                                         temp_fi = cplx_mult(comp_sld, ephase); 
    120                                         sumj_ud = cplx_add(sumj_ud, temp_fi); 
     122                                        cassign(&comp_sld, b_sld.re_ud, b_sld.im_ud); 
     123                                        cplx_mult(&temp_fi, comp_sld, ephase); 
     124                                        cplx_add(&sumj_ud, sumj_ud, temp_fi); 
    121125                                } 
    122126                                //down_up 
    123127                                if (this->inspin < 1.0 && this->outspin > 0.0){ 
    124                                         comp_sld = cassign(b_sld.re_du, b_sld.im_du); 
    125                                         temp_fi = cplx_mult(comp_sld, ephase); 
    126                                         sumj_du = cplx_add(sumj_du, temp_fi); 
    127                                 } 
    128  
     128                                        cassign(&comp_sld, b_sld.re_du, b_sld.im_du); 
     129                                        cplx_mult(&temp_fi, comp_sld, ephase); 
     130                                        cplx_add(&sumj_du, sumj_du, temp_fi); 
     131                                } 
    129132 
    130133                                if (i == 0){ 
Note: See TracChangeset for help on using the changeset viewer.