Changeset a1daf86 in sasview for src/sas/sascalc


Ignore:
Timestamp:
Nov 13, 2017 6:02:21 PM (7 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:
a57ae07
Parents:
95d7c4f
Message:

hack around broken isfinite/isnan in tinycc

Location:
src/sas/sascalc/calculator
Files:
4 edited

Legend:

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

    r4c29e4d ra1daf86  
    77#include <stdio.h> 
    88#include <stdlib.h> 
    9 #if defined(_MSC_VER) 
     9#if defined _MSC_VER  || defined __TINYCC__ 
    1010#define NEED_ERF 
    1111#endif 
     
    2121 
    2222 
    23 #ifdef _WIN32 
     23#ifdef __TINYCC__ 
     24# ifdef isnan 
     25#   undef isnan 
     26# endif 
     27# ifdef isfinite 
     28#   undef isfinite 
     29# endif 
     30# define isnan(x) (x != x) 
     31# define isfinite(x) (x != INFINITY && x != -INFINITY) 
     32#elif defined _WIN32 
    2433# include <float.h> 
    2534# if !defined __MINGW32__ || defined __NO_ISOCEXT 
     
    3039#   define isinf(x) (!_finite(x) && !_isnan(x)) 
    3140#  endif 
    32 #  ifndef finite 
    33 #   define finite(x) _finite(x) 
     41#  ifndef isfinite 
     42#   define isfinite(x) _finite(x) 
    3443#  endif 
    3544# endif 
     
    8493double erf(double x) 
    8594{ 
    86     if (!finite(x)) { 
     95    if (!isfinite(x)) { 
    8796        if (isnan(x)) return x;      /* erf(NaN)   = NaN   */ 
    8897        return (x>0 ? 1.0 : -1.0);   /* erf(+-inf) = +-1.0 */ 
     
    94103double erfc(double x) 
    95104{ 
    96     if (!finite(x)) { 
     105    if (!isfinite(x)) { 
    97106        if (isnan(x)) return x;      /* erfc(NaN)   = NaN      */ 
    98107        return (x>0 ? 0.0 : 2.0);    /* erfc(+-inf) = 0.0, 2.0 */ 
  • src/sas/sascalc/calculator/c_extensions/sld2i.c

    r7e82256 ra1daf86  
    8181                sumj_du = cassign(0.0, 0.0); 
    8282                sumj_dd = cassign(0.0, 0.0); 
    83                 //printf ("%d ", i); 
     83                //printf("i: %d\n", i); 
    8484                //q = sqrt(qx[i]*qx[i] + qy[i]*qy[i]); // + qz[i]*qz[i]); 
    8585 
    8686                for(j=0; j<this->n_pix; j++){ 
     87                        //printf("j: %d\n", j); 
    8788                        if (this->sldn_val[j]!=0.0 
    8889                                ||this->mx_val[j]!=0.0 
     
    141142                I_out[i] *= (1.0E+8 / count); //in cm (unit) / number; //to be multiplied by vol_pix 
    142143        } 
    143         //printf ("count = %d %g %g %g %g\n", count, sldn_val[0],mx_val[0], my_val[0], mz_val[0]); 
     144        //printf("count = %d %g %g %g %g\n", count, this->sldn_val[0],this->mx_val[0], this->my_val[0], this->mz_val[0]); 
    144145} 
    145146/** 
     
    203204                I_out[i] *= (1.0E+8 / count); //in cm (unit) / number; //to be multiplied by vol_pix 
    204205        } 
    205         //printf ("count = %d %g %g %g %g\n", count, sldn_val[0],mx_val[0], my_val[0], mz_val[0]); 
     206        //printf("count = %d %g %g %g %g\n", count, sldn_val[0],mx_val[0], my_val[0], mz_val[0]); 
    206207} 
  • src/sas/sascalc/calculator/c_extensions/sld2i_module.c

    r7e82256 ra1daf86  
    7171        GenI* sld2i; 
    7272 
     73        //printf("new GenI\n"); 
    7374        if (!PyArg_ParseTuple(args, "iOOOOOOOOddd", &is_avg, &x_val_obj, &y_val_obj, &z_val_obj, &sldn_val_obj, &mx_val_obj, &my_val_obj, &mz_val_obj, &vol_pix_obj, &inspin, &outspin, &stheta)) return NULL; 
    7475        INVECTOR(x_val_obj, x_val, n_x); 
     
    104105        GenI* sld2i; 
    105106 
     107        //printf("in genicom_inputXY\n"); 
    106108        if (!PyArg_ParseTuple(args, "OOOO",  &gen_obj, &qx_obj, &qy_obj, &I_out_obj)) return NULL; 
    107109        sld2i = (GenI *)PyCapsule_GetPointer(gen_obj, "GenI"); 
     
    109111        INVECTOR(qy_obj, qy, n_qy); 
    110112        OUTVECTOR(I_out_obj, I_out, n_out); 
     113        //printf("qx, qy, I_out: %d %d %d, %d %d %d\n", qx, qy, I_out, n_qx, n_qy, n_out); 
    111114 
    112115        // Sanity check 
     
    114117 
    115118        genicomXY(sld2i, (int)n_qx, qx, qy, I_out); 
     119        //printf("done calc\n"); 
    116120        //return PyCObject_FromVoidPtr(s, del_genicom); 
    117121        return Py_BuildValue("i",1); 
  • src/sas/sascalc/calculator/sas_gen.py

    rf926abb ra1daf86  
    143143            qx, qy = _vec(qx), _vec(qy) 
    144144            I_out = np.empty_like(qx) 
     145            #print("npoints", qx.shape, "npixels", pos_x.shape) 
    145146            mod.genicomXY(model, qx, qy, I_out) 
     147            #print("I_out after", I_out) 
    146148        else: 
    147149            qx = _vec(qx) 
     
    11121114    model.set_sld_data(omf2sld.output) 
    11131115    x = np.linspace(0, 0.1, 11)[1:] 
    1114     model.runXY([x, x]) 
     1116    return model.runXY([x, x]) 
    11151117 
    11161118if __name__ == "__main__": 
    11171119    #test_load() 
    11181120    #test_save() 
     1121    #print(test()) 
    11191122    test() 
Note: See TracChangeset for help on using the changeset viewer.