14 #define strcasecmp(s,t) stricmp(s,t)    15 #define strncasecmp(s,t,n) strnicmp(s,t,n)    39 #define NELEMS(arr)  (sizeof(arr)/sizeof(arr[0]))    43 #define GRID_TEMPLATE(TYPE) \    44   typedef struct NL_Msmgrid_##TYPE##_t { \    55 #define GRID_INIT(_p) \    56   ((_p)->buffer=NULL, (_p)->data=NULL, (_p)->numbytes=0, (_p)->maxbytes=0, \    57    (_p)->i0=0, (_p)->j0=0, (_p)->k0=0, (_p)->ni=0, (_p)->nj=0, (_p)->nk=0)    61 #define GRID_DONE(_p) \    66 #define GRID_INDEX(_p, _i, _j, _k) \    67   (((_k)*((_p)->nj) + (_j))*((_p)->ni) + (_i))    71 #define GRID_POINTER(_p, _i, _j, _k) \    72   ((_p)->data + GRID_INDEX(_p, _i, _j, _k))    77 #define GRID_RESIZE(_p, TYPE, __i0, __ni, __j0, __nj, __k0, __nk) \    79     int _i0=(__i0), _ni=(__ni); \    80     int _j0=(__j0), _nj=(__nj); \    81     int _k0=(__k0), _nk=(__nk); \    82     size_t _numbytes = (_nk * _nj) * (size_t) _ni * sizeof((_p)->buffer[0]); \    83     if ((_p)->maxbytes < _numbytes) { \    84       void *_t = realloc((_p)->buffer, _numbytes); \    85       if (NULL == _t) return NL_MSM_ERROR_MALLOC; \    86       (_p)->buffer = (TYPE *) _t; \    87       (_p)->maxbytes = _numbytes; \    89     (_p)->numbytes = _numbytes; \    90     (_p)->i0 = _i0, (_p)->ni = _ni; \    91     (_p)->j0 = _j0, (_p)->nj = _nj; \    92     (_p)->k0 = _k0, (_p)->nk = _nk; \    93     (_p)->data = (_p)->buffer + GRID_INDEX((_p), -_i0, -_j0, -_k0); \    98 #define GRID_ZERO(_p) \    99   memset((_p)->buffer, 0, (_p)->numbytes)     105 #define GRID_INDEX_CHECK(a, _i, _j, _k) \   107     ASSERT((a)->i0 <= (_i) && (_i) < (a)->ni + (a)->i0); \   108     ASSERT((a)->j0 <= (_j) && (_j) < (a)->nj + (a)->j0); \   109     ASSERT((a)->k0 <= (_k) && (_k) < (a)->nk + (a)->k0); \   114 #define GRID_INDEX_CHECK(a, _i, _j, _k)   119 #define DEFAULT_GRIDSPACING  2.5   120 #define DEFAULT_APPROX       NL_MSM_APPROX_CUBIC   121 #define DEFAULT_SPLIT        NL_MSM_SPLIT_TAYLOR2   122 #define DEFAULT_NLEVELS      0     124 #define DEFAULT_DENSITY      0.1   125 #define DEFAULT_BINFILL      0.8   126 #define DEFAULT_NBINSLOTS    8   140 #define SPOLY(pg, pdg, ra, split) \   144     double _g = 0, _dg = 0; \   145     ASSERT(0 <= _s && _s <= 1); \   148       case NL_MSM_SPLIT_TAYLOR2: \   149         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8));                               \   150         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4)); \   152       case NL_MSM_SPLIT_TAYLOR3: \   153         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16)));             \   154         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16))); \   156       case NL_MSM_SPLIT_TAYLOR4: \   157         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16                 \   158                 + (_s-1)*(35./128))));                                         \   159         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16 \   160                 + (_s-1)*(35./32))));      \   162       case NL_MSM_SPLIT_TAYLOR5: \   163         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16                 \   164                 + (_s-1)*(35./128 + (_s-1)*(-63./256)))));                     \   165         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16 + (_s-1)*(35./32  \   166                 + (_s-1)*(-315./256)))));                                      \   168       case NL_MSM_SPLIT_TAYLOR6: \   169         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16                 \   170                 + (_s-1)*(35./128 + (_s-1)*(-63./256                           \   171                     + (_s-1)*(231./1024))))));                                 \   172         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16 + (_s-1)*(35./32  \   173                 + (_s-1)*(-315./256 + (_s-1)*(693./512))))));                  \   175       case NL_MSM_SPLIT_TAYLOR7: \   176         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16                 \   177                 + (_s-1)*(35./128 + (_s-1)*(-63./256                           \   178                     + (_s-1)*(231./1024 + (_s-1)*(-429./2048)))))));           \   179         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16 + (_s-1)*(35./32  \   180                 + (_s-1)*(-315./256 + (_s-1)*(693./512                         \   181                     + (_s-1)*(-3003./2048)))))));                              \   183       case NL_MSM_SPLIT_TAYLOR8: \   184         _g = 1 + (_s-1)*(-1./2 + (_s-1)*(3./8 + (_s-1)*(-5./16                 \   185                 + (_s-1)*(35./128 + (_s-1)*(-63./256                           \   186                     + (_s-1)*(231./1024 + (_s-1)*(-429./2048                   \   187                         + (_s-1)*(6435./32768))))))));                         \   188         _dg = (2*_r)*(-1./2 + (_s-1)*(3./4 + (_s-1)*(-15./16 + (_s-1)*(35./32  \   189                 + (_s-1)*(-315./256 + (_s-1)*(693./512                         \   190                     + (_s-1)*(-3003./2048 + (_s-1)*(6435./4096))))))));        \   192       case NL_MSM_SPLIT_TAYLOR1: \   193         _g = 1 + (_s-1)*(-1./2); \   194         _dg = (2*_r)*(-1./2); \   197       case NL_MSM_SPLIT_SIGMA2_3:   \   198         _g = 2 + _s*(-2 + _r);                                                \   199         _dg = _r*(-4 + _r*3);                                                  \   201       case NL_MSM_SPLIT_SIGMA3_5: \   202         _g = 9./4 + _s*(-5./2 + _s*(9./4 - _r));                             \   203         _dg = _r*(-5 + _s*(9 + _r*(-5)));                                     \   205       case NL_MSM_SPLIT_SIGMA4_6: \   206         _g = 21./8 + _s*(-35./8 + _s*(63./8 + _r*(-7 + _r*(15./8))));        \   207         _dg = _r*(-35./4 + _s*(63./2 + _r*(-35 + _r*(45./4))));               \   209       case NL_MSM_SPLIT_SIGMA4_7: \   210         _g = 5./2 + _s*(-7./2 + _s*(7./2 + _s*(-5./2 + _r)));               \   211         _dg = _r*(-7 + _s*(14 + _s*(-15 + _r*(7))));                         \   213       case NL_MSM_SPLIT_SIGMA5_8: \   214         _g = 45./16 + _s*(-21./4 + _s*(63./8 + _s*(-45./4                   \   215                 + _r*(9 + _r*(-35./16)))));                                    \   216         _dg = _r*(-21./2 + _s*(63./2 + _s*(-135./2                           \   217                 + _r*(63 + _r*(-35./2)))));                                    \   219       case NL_MSM_SPLIT_SIGMA5_9: \   220         _g = 175./64 + _s*(-75./16 + _s*(189./32 + _s*(-75./16              \   221                 + _s*(175./64 - _r))));                                       \   222         _dg = _r*(-75./8 + _s*(189./8 + _s*(-225./8 + _s*(175./8            \   225       case NL_MSM_SPLIT_SIGMA6_9: \   226         _g = 25./8 + _s*(-15./2 + _s*(63./4 + _s*(-75./2                    \   227                 + _r*(45 + _r*(-175./8 + _r*4)))));                            \   228         _dg = _r*(-15 + _s*(63 + _s*(-225                                    \   229                 + _r*(315 + _r*(-175 + _r*36)))));                             \   231       case NL_MSM_SPLIT_SIGMA6_10: \   232         _g = 385./128 + _s*(-825./128 + _s*(693./64 + _s*(-825./64          \   233                 + _s*(1925./128 + _r*(-11 + _r*(315./128))))));               \   234         _dg = _r*(-825./64 + _s*(693./16 + _s*(-2475./32                     \   235                 + _s*(1925./16 + _r*(-99 + _r*(1575./64))))));                \   237       case NL_MSM_SPLIT_SIGMA6_11: \   238         _g = 189./64 + _s*(-385./64 + _s*(297./32 + _s*(-297./32            \   239                 + _s*(385./64 + _s*(-189./64 + _r)))));                      \   240         _dg = _r*(-385./32 + _s*(297./8 + _s*(-891./16 + _s*(385./8         \   241                   + _s*(-945./32 + _r*(11))))));                              \   243       case NL_MSM_SPLIT_SIGMA7_11: \   244         _g = 105./32 + _s*(-275./32 + _s*(297./16 + _s*(-495./16            \   245                 + _s*(1925./32 + _r*(-66 + _r*(945./32 + _r*(-5)))))));       \   246         _dg = _r*(-275./16 + _s*(297./4 + _s*(-1485./8                       \   247                 + _s*(1925./4 + _r*(-594 + _r*(4725./16 + _r*(-55)))))));     \   249       case NL_MSM_SPLIT_SIGMA7_12: \   250         _g = 819./256 + _s*(-1001./128 + _s*(3861./256                       \   251               + _s*(-1287./64 + _s*(5005./256 + _s*(-2457./128              \   252                     + _r*(13 + _r*(-693./256)))))));                           \   253         _dg = _r*(-1001./64 + _s*(3861./64 + _s*(-3861./32                   \   254                 + _s*(5005./32 + _s*(-12285./64 + _r*(143                    \   255                       + _r*(-2079./64)))))));                                  \   257       case NL_MSM_SPLIT_SIGMA7_13: \   258         _g = 1617./512 + _s*(-1911./256 + _s*(7007./512 + _s*(-2145./128    \   259                 + _s*(7007./512 + _s*(-1911./256 + _s*(1617./512 - _r))))));\   260         _dg = _r*(-1911./128 + _s*(7007./128 + _s*(-6435./64 + _s*(7007./64 \   261                   + _s*(-9555./128 + _s*(4851./128 + _r*(-13)))))));         \   263       case NL_MSM_SPLIT_SIGMA8_12: \   264         _g = 455./128 + _s*(-715./64 + _s*(3861./128 + _s*(-2145./32        \   265                 + _s*(25025./128 + _r*(-286 + _r*(12285./64 + _r*(-65         \   266                         + _r*(1155./128))))))));                               \   267         _dg = _r*(-715./32 + _s*(3861./32 + _s*(-6435./16                    \   268                 + _s*(25025./16 + _r*(-2574 + _r*(61425./32 + _r*(-715        \   269                         + _r*(3465./32))))))));                                \   271       case NL_MSM_SPLIT_SIGMA8_13: \   272         _g = 441./128 + _s*(-637./64 + _s*(3003./128                         \   273               + _s*(-1287./32 + _s*(7007./128 + _s*(-5733./64               \   274                     + _r*(91 + _r*(-4851./128 + _r*(6))))))));                 \   275         _dg = _r*(-637./32 + _s*(3003./32 + _s*(-3861./16                    \   276                 + _s*(7007./16 + _s*(-28665./32 + _r*(1001                   \   277                       + _r*(-14553./32 + _r*(78))))))));                       \   279       case NL_MSM_SPLIT_SIGMA8_14: \   280         _g = 3465./1024 + _s*(-9555./1024 + _s*(21021./1024                  \   281               + _s*(-32175./1024 + _s*(35035./1024 + _s*(-28665./1024       \   282                     + _s*(24255./1024 + _r*(-15 + _r*(3003./1024))))))));     \   283         _dg = _r*(-9555./512 + _s*(21021./256 + _s*(-96525./512              \   284                 + _s*(35035./128 + _s*(-143325./512 + _s*(72765./256        \   285                       + _r*(-195 + _r*(21021./512))))))));                     \   287       case NL_MSM_SPLIT_SIGMA8_15: \   288         _g = 429./128 + _s*(-1155./128 + _s*(2457./128 + _s*(-3575./128     \   289                 + _s*(3575./128 + _s*(-2457./128 + _s*(1155./128            \   290                       + _s*(-429./128 + _r)))))));                            \   291         _dg = _r*(-1155./64 + _s*(2457./32 + _s*(-10725./64                  \   292                 + _s*(3575./16 + _s*(-12285./64 + _s*(3465./32              \   293                       + _s*(-3003./64 + _r*(15))))))));                       \   296       case NL_MSM_SPLIT_SIGMA2_6: \   297         _g = (31./16) + _s*(-23./16 + _s*(9./16 + _s*(-1./16))); \   298         _dg = (2*_r)*(-23./16 + _s*(9./8 + _s*(-3./16))); \   301       case NL_MSM_SPLIT_SWITCH1_2:                                             \   303           _g = 5./3 + _r + _s*(-3 + _r*(4./3));                               \   304           _dg = 1 + _r*(-6 + _r*(4));                                          \   311       case NL_MSM_SPLIT_SWITCH3_4:                                             \   313           _g = 5./7 + _r*(27./7 + _r*(-41./7 + _r*(16./7)));                   \   314           _dg = 27./7 + _r*(-82./7 + _r*(48./7));                              \   317           _g = 47./28 + _s*(-5./7);                                           \   321       case NL_MSM_SPLIT_SWITCH7_8:                                             \   323           _g = -19./15 + _r*(49./5 + _r*(-59./5 + _r*(64./15)));               \   324           _dg = 49./5 + _r*(-118./5 + _r*(64./5));                             \   327           _g = 191./120 + _s*(-3./5);                                         \   332         return NL_MSM_ERROR_SUPPORT; \   351 #define SPOLY_SPREC(pg, pdg, ra, split) \   355     float _g = 0, _dg = 0; \   356     ASSERT(0 <= _s && _s <= 1); \   359       case NL_MSM_SPLIT_TAYLOR2: \   360         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8));                             \   361         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4)); \   363       case NL_MSM_SPLIT_TAYLOR3: \   364         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16)));          \   365         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16))); \   367       case NL_MSM_SPLIT_TAYLOR4: \   368         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16              \   369                 + (_s-1)*(35.f/128))));                                        \   370         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16 \   371                 + (_s-1)*(35.f/32))));      \   373       case NL_MSM_SPLIT_TAYLOR5: \   374         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16              \   375                 + (_s-1)*(35.f/128 + (_s-1)*(-63.f/256)))));                   \   376         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16 \   377                 + (_s-1)*(35.f/32 + (_s-1)*(-315.f/256)))));                   \   379       case NL_MSM_SPLIT_TAYLOR6: \   380         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16              \   381                 + (_s-1)*(35.f/128 + (_s-1)*(-63.f/256                         \   382                     + (_s-1)*(231.f/1024))))));                                \   383         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16 \   384                 + (_s-1)*(35.f/32 + (_s-1)*(-315.f/256 \   385                     + (_s-1)*(693.f/512))))));                  \   387       case NL_MSM_SPLIT_TAYLOR7: \   388         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16              \   389                 + (_s-1)*(35.f/128 + (_s-1)*(-63.f/256                         \   390                     + (_s-1)*(231.f/1024 + (_s-1)*(-429.f/2048)))))));         \   391         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16 \   392                 + (_s-1)*(35.f/32 + (_s-1)*(-315.f/256 + (_s-1)*(693.f/512     \   393                     + (_s-1)*(-3003.f/2048)))))));                             \   395       case NL_MSM_SPLIT_TAYLOR8: \   396         _g = 1 + (_s-1)*(-1.f/2 + (_s-1)*(3.f/8 + (_s-1)*(-5.f/16              \   397                 + (_s-1)*(35.f/128 + (_s-1)*(-63.f/256                         \   398                     + (_s-1)*(231.f/1024 + (_s-1)*(-429.f/2048                 \   399                         + (_s-1)*(6435.f/32768))))))));                        \   400         _dg = (2*_r)*(-1.f/2 + (_s-1)*(3.f/4 + (_s-1)*(-15.f/16 \   401                 + (_s-1)*(35.f/32 + (_s-1)*(-315.f/256 + (_s-1)*(693.f/512     \   402                     + (_s-1)*(-3003.f/2048 + (_s-1)*(6435.f/4096))))))));      \   404       case NL_MSM_SPLIT_TAYLOR1: \   405         _g = 1 + (_s-1)*(-1.f/2); \   406         _dg = (2*_r)*(-1.f/2); \   409       case NL_MSM_SPLIT_SIGMA2_3:   \   410         _g = 2 + _s*(-2 + _r);                                                \   411         _dg = _r*(-4 + _r*3);                                                  \   413       case NL_MSM_SPLIT_SIGMA3_5: \   414         _g = 9.f/4 + _s*(-5.f/2 + _s*(9.f/4 - _r));                            \   415         _dg = _r*(-5 + _s*(9 + _r*(-5)));                                     \   417       case NL_MSM_SPLIT_SIGMA4_6: \   418         _g = 21.f/8 + _s*(-35.f/8 + _s*(63.f/8 + _r*(-7 + _r*(15.f/8))));      \   419         _dg = _r*(-35.f/4 + _s*(63.f/2 + _r*(-35 + _r*(45.f/4))));             \   421       case NL_MSM_SPLIT_SIGMA4_7: \   422         _g = 5.f/2 + _s*(-7.f/2 + _s*(7.f/2 + _s*(-5.f/2 + _r)));              \   423         _dg = _r*(-7 + _s*(14 + _s*(-15 + _r*(7))));                         \   425       case NL_MSM_SPLIT_SIGMA5_8: \   426         _g = 45.f/16 + _s*(-21.f/4 + _s*(63.f/8 + _s*(-45.f/4                  \   427                 + _r*(9 + _r*(-35.f/16)))));                                   \   428         _dg = _r*(-21.f/2 + _s*(63.f/2 + _s*(-135.f/2                          \   429                 + _r*(63 + _r*(-35.f/2)))));                                   \   431       case NL_MSM_SPLIT_SIGMA5_9: \   432         _g = 175.f/64 + _s*(-75.f/16 + _s*(189.f/32 + _s*(-75.f/16             \   433                 + _s*(175.f/64 - _r))));                                       \   434         _dg = _r*(-75.f/8 + _s*(189.f/8 + _s*(-225.f/8 + _s*(175.f/8           \   437       case NL_MSM_SPLIT_SIGMA6_9: \   438         _g = 25.f/8 + _s*(-15.f/2 + _s*(63.f/4 + _s*(-75.f/2                   \   439                 + _r*(45 + _r*(-175.f/8 + _r*4)))));                           \   440         _dg = _r*(-15 + _s*(63 + _s*(-225                                    \   441                 + _r*(315 + _r*(-175 + _r*36)))));                             \   443       case NL_MSM_SPLIT_SIGMA6_10: \   444         _g = 385.f/128 + _s*(-825.f/128 + _s*(693.f/64 + _s*(-825.f/64         \   445                 + _s*(1925.f/128 + _r*(-11 + _r*(315.f/128))))));              \   446         _dg = _r*(-825.f/64 + _s*(693.f/16 + _s*(-2475.f/32                    \   447                 + _s*(1925.f/16 + _r*(-99 + _r*(1575.f/64))))));               \   449       case NL_MSM_SPLIT_SIGMA6_11: \   450         _g = 189.f/64 + _s*(-385.f/64 + _s*(297.f/32 + _s*(-297.f/32           \   451                 + _s*(385.f/64 + _s*(-189.f/64 + _r)))));                      \   452         _dg = _r*(-385.f/32 + _s*(297.f/8 + _s*(-891.f/16 + _s*(385.f/8        \   453                   + _s*(-945.f/32 + _r*(11))))));                              \   455       case NL_MSM_SPLIT_SIGMA7_11: \   456         _g = 105.f/32 + _s*(-275.f/32 + _s*(297.f/16 + _s*(-495.f/16           \   457                 + _s*(1925.f/32 + _r*(-66 + _r*(945.f/32 + _r*(-5)))))));      \   458         _dg = _r*(-275.f/16 + _s*(297.f/4 + _s*(-1485.f/8                      \   459                 + _s*(1925.f/4 + _r*(-594 + _r*(4725.f/16 + _r*(-55)))))));    \   461       case NL_MSM_SPLIT_SIGMA7_12: \   462         _g = 819.f/256 + _s*(-1001.f/128 + _s*(3861.f/256                      \   463               + _s*(-1287.f/64 + _s*(5005.f/256 + _s*(-2457.f/128              \   464                     + _r*(13 + _r*(-693.f/256)))))));                          \   465         _dg = _r*(-1001.f/64 + _s*(3861.f/64 + _s*(-3861.f/32                  \   466                 + _s*(5005.f/32 + _s*(-12285.f/64 + _r*(143                    \   467                       + _r*(-2079.f/64)))))));                                 \   469       case NL_MSM_SPLIT_SIGMA7_13: \   470         _g = 1617.f/512 + _s*(-1911.f/256 + _s*(7007.f/512 + _s*(-2145.f/128   \   471                 + _s*(7007.f/512 + _s*(-1911.f/256 + _s*(1617.f/512 - _r))))));\   472         _dg = _r*(-1911.f/128 + _s*(7007.f/128 + _s*(-6435.f/64 + _s*(7007.f/64\   473                   + _s*(-9555.f/128 + _s*(4851.f/128 + _r*(-13)))))));         \   475       case NL_MSM_SPLIT_SIGMA8_12: \   476         _g = 455.f/128 + _s*(-715.f/64 + _s*(3861.f/128 + _s*(-2145.f/32       \   477                 + _s*(25025.f/128 + _r*(-286 + _r*(12285.f/64 + _r*(-65        \   478                         + _r*(1155.f/128))))))));                              \   479         _dg = _r*(-715.f/32 + _s*(3861.f/32 + _s*(-6435.f/16                   \   480                 + _s*(25025.f/16 + _r*(-2574 + _r*(61425.f/32 + _r*(-715       \   481                         + _r*(3465.f/32))))))));                               \   483       case NL_MSM_SPLIT_SIGMA8_13: \   484         _g = 441.f/128 + _s*(-637.f/64 + _s*(3003.f/128                        \   485               + _s*(-1287.f/32 + _s*(7007.f/128 + _s*(-5733.f/64               \   486                     + _r*(91 + _r*(-4851.f/128 + _r*(6))))))));                \   487         _dg = _r*(-637.f/32 + _s*(3003.f/32 + _s*(-3861.f/16                   \   488                 + _s*(7007.f/16 + _s*(-28665.f/32 + _r*(1001                   \   489                       + _r*(-14553.f/32 + _r*(78))))))));                      \   491       case NL_MSM_SPLIT_SIGMA8_14: \   492         _g = 3465.f/1024 + _s*(-9555.f/1024 + _s*(21021.f/1024                 \   493               + _s*(-32175.f/1024 + _s*(35035.f/1024 + _s*(-28665.f/1024       \   494                     + _s*(24255.f/1024 + _r*(-15 + _r*(3003.f/1024))))))));    \   495         _dg = _r*(-9555.f/512 + _s*(21021.f/256 + _s*(-96525.f/512             \   496                 + _s*(35035.f/128 + _s*(-143325.f/512 + _s*(72765.f/256        \   497                       + _r*(-195 + _r*(21021.f/512))))))));                    \   499       case NL_MSM_SPLIT_SIGMA8_15: \   500         _g = 429.f/128 + _s*(-1155.f/128 + _s*(2457.f/128 + _s*(-3575.f/128    \   501                 + _s*(3575.f/128 + _s*(-2457.f/128 + _s*(1155.f/128            \   502                       + _s*(-429.f/128 + _r)))))));                            \   503         _dg = _r*(-1155.f/64 + _s*(2457.f/32 + _s*(-10725.f/64                 \   504                 + _s*(3575.f/16 + _s*(-12285.f/64 + _s*(3465.f/32              \   505                       + _s*(-3003.f/64 + _r*(15))))))));                       \   508       case NL_MSM_SPLIT_SIGMA2_6: \   509         _g = (31.f/16) + _s*(-23.f/16 + _s*(9.f/16 + _s*(-1.f/16))); \   510         _dg = (2*_r)*(-23.f/16 + _s*(9.f/8 + _s*(-3.f/16))); \   513       case NL_MSM_SPLIT_SWITCH1_2:                                             \   515           _g = 5.f/3 + _r + _s*(-3 + _r*(4.f/3));                              \   516           _dg = 1 + _r*(-6 + _r*(4));                                          \   523       case NL_MSM_SPLIT_SWITCH3_4:                                             \   525           _g = 5.f/7 + _r*(27.f/7 + _r*(-41.f/7 + _r*(16.f/7)));               \   526           _dg = 27.f/7 + _r*(-82.f/7 + _r*(48.f/7));                           \   529           _g = 47.f/28 + _s*(-5.f/7);                                          \   530           _dg = _r*(-10.f/7);                                                  \   533       case NL_MSM_SPLIT_SWITCH7_8:                                             \   535           _g = -19.f/15 + _r*(49.f/5 + _r*(-59.f/5 + _r*(64.f/15)));           \   536           _dg = 49.f/5 + _r*(-118.f/5 + _r*(64.f/5));                          \   539           _g = 191.f/120 + _s*(-3.f/5);                                        \   544         return NL_MSM_ERROR_SUPPORT; \   666     NL_Msmgrid_double *
qh; 
   667     NL_Msmgrid_double *
eh; 
   668     NL_Msmgrid_double *
gc; 
   724   int NL_msm_cuda_setup_gridcutoff(
NL_Msm *);
   725   void NL_msm_cuda_cleanup_gridcutoff(
NL_Msm *);
   727   int NL_msm_cuda_compute_gridcutoff(
NL_Msm *);
   728   int NL_msm_cuda_condense_qgrids(
NL_Msm *);
   729   int NL_msm_cuda_expand_egrids(
NL_Msm *);
 
int NL_msm_compute_short_range_sprec(NL_Msm *pm)
#define GRID_TEMPLATE(TYPE)
int NL_msm_compute_long_range_sprec(NL_Msm *pm)
int NL_msm_compute_short_range(NL_Msm *pm)
wkf_timerhandle timer_longrng
int NL_msm_compute_long_range(NL_Msm *pm)
void NL_msm_cleanup(NL_Msm *pm)