2016-05-24 13:47:43,444 DIAGNOSTIC brian2: Logging to file: /tmp/brian_debug_2az2_E.log, copy of main script saved as: /tmp/brian_script_YG4viP.py 2016-05-24 13:47:43,444 DIAGNOSTIC brian2: Python interpreter: /usr/bin/python2 2016-05-24 13:47:43,444 DIAGNOSTIC brian2: Platform: linux2 2016-05-24 13:47:43,444 DIAGNOSTIC brian2: python version is: 2.7.11 (default, Mar 31 2016, 06:18:34) [GCC 5.3.0] 2016-05-24 13:47:43,444 DIAGNOSTIC brian2: brian version is: 2.0rc1 2016-05-24 13:47:43,444 DIAGNOSTIC brian2: scipy version is: 0.17.1 2016-05-24 13:47:43,445 DIAGNOSTIC brian2: sympy version is: 1.0 2016-05-24 13:47:43,445 DIAGNOSTIC brian2: numpy version is: 1.11.0 2016-05-24 13:47:43,445 DIAGNOSTIC brian2: weave version is: 0.4.9 2016-05-24 13:47:43,711 DIAGNOSTIC brian2.core.names: Created object of class Clock with name defaultclock 2016-05-24 13:47:43,712 DIAGNOSTIC brian2.core.clocks: Created clock defaultclock with dt=100. us 2016-05-24 13:47:43,713 DIAGNOSTIC brian2.core.names: Created object of class MagicNetwork with name magicnetwork 2016-05-24 13:47:43,725 DIAGNOSTIC brian2.core.names: Created object of class Clock with name defaultclock 2016-05-24 13:47:43,726 DIAGNOSTIC brian2.core.clocks: Created clock defaultclock with dt=100. us 2016-05-24 13:47:43,726 DIAGNOSTIC brian2.core.names: Created object of class PoissonGroup with name poissongroup 2016-05-24 13:47:43,727 DIAGNOSTIC brian2.core.base: Created BrianObject with name poissongroup, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=0 2016-05-24 13:47:43,728 DIAGNOSTIC brian2.core.names: Created object of class Thresholder with name poissongroup_thresholder 2016-05-24 13:47:43,728 DIAGNOSTIC brian2.core.base: Created BrianObject with name poissongroup_thresholder, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=0 2016-05-24 13:47:43,729 DIAGNOSTIC brian2.core.names: Created object of class NeuronGroup with name neurongroup 2016-05-24 13:47:43,729 DIAGNOSTIC brian2.core.base: Created BrianObject with name neurongroup, clock=Clock(dt=100. * usecond, name='defaultclock'), when=start, order=0 2016-05-24 13:47:43,737 DIAGNOSTIC brian2.groups.neurongroup: Creating NeuronGroup of size 1, equations dge/dt = -ge / taue : 1 dv/dt = (ge * (Ee-vr) + El - v) / taum : V. 2016-05-24 13:47:43,738 DIAGNOSTIC brian2.core.names: Created object of class Thresholder with name neurongroup_thresholder 2016-05-24 13:47:43,738 DIAGNOSTIC brian2.core.base: Created BrianObject with name neurongroup_thresholder, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=0 2016-05-24 13:47:43,738 DIAGNOSTIC brian2.core.names: Created object of class Resetter with name neurongroup_resetter 2016-05-24 13:47:43,739 DIAGNOSTIC brian2.core.base: Created BrianObject with name neurongroup_resetter, clock=Clock(dt=100. * usecond, name='defaultclock'), when=resets, order=0 2016-05-24 13:47:43,739 DIAGNOSTIC brian2.core.names: Created object of class StateUpdater with name neurongroup_stateupdater 2016-05-24 13:47:43,739 DIAGNOSTIC brian2.core.base: Created BrianObject with name neurongroup_stateupdater, clock=Clock(dt=100. * usecond, name='defaultclock'), when=groups, order=0 2016-05-24 13:47:43,740 DIAGNOSTIC brian2.core.names: Created object of class Synapses with name synapses 2016-05-24 13:47:43,740 DIAGNOSTIC brian2.core.base: Created BrianObject with name synapses, clock=Clock(dt=100. * usecond, name='defaultclock'), when=start, order=0 2016-05-24 13:47:43,746 DIAGNOSTIC brian2.core.names: Created object of class SynapticPathway with name synapses_pre 2016-05-24 13:47:43,747 DIAGNOSTIC brian2.core.base: Created BrianObject with name synapses_pre, clock=Clock(dt=100. * usecond, name='defaultclock'), when=synapses, order=-1 2016-05-24 13:47:43,747 DIAGNOSTIC brian2.core.names: Created object of class SynapticPathway with name synapses_post 2016-05-24 13:47:43,748 DIAGNOSTIC brian2.core.base: Created BrianObject with name synapses_post, clock=Clock(dt=100. * usecond, name='defaultclock'), when=synapses, order=1 2016-05-24 13:47:43,749 DEBUG brian2.synapses.synapses: Creating synapses from group 'poissongroup' to group 'neurongroup', using generator '_k for _k in range(N_post) if True' 2016-05-24 13:47:43,749 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=synapses_create_generator) for abstract code: Key create_cond: _cond = True Key setup_iterator: _iter_high = N_post _iter_step = 1 _iter_low = 0 Key create_j: _pre_idx = _all_pre _j = _k Key update_post: _post_idx = _all_post _n = 1 2016-05-24 13:47:43,847 DIAGNOSTIC brian2.devices.device: synapses_synapses_create_generator_codeobject* abstract code: Key create_cond: _cond = True Key setup_iterator: _iter_high = N_post _iter_step = 1 _iter_low = 0 Key create_j: _pre_idx = _all_pre _j = _k Key update_post: _post_idx = _all_post _n = 1 2016-05-24 13:47:43,853 DIAGNOSTIC brian2.devices.device: synapses_synapses_create_generator_codeobject* snippet (scalar): Key create_cond: Key setup_iterator: Key create_j: Key update_post: 2016-05-24 13:47:43,853 DIAGNOSTIC brian2.devices.device: synapses_synapses_create_generator_codeobject* snippet (vector): Key create_cond: const bool _cond = true; Key setup_iterator: const int32_t _iter_high = N_post; const int32_t _iter_step = 1; const int32_t _iter_low = 0; Key create_j: const int32_t _all_pre = _ptr_array_poissongroup_i[_i]; const int32_t _pre_idx = _all_pre; const int32_t _j = _k; Key update_post: const int32_t _all_post = _ptr_array_neurongroup_i[_j]; const int32_t _post_idx = _all_post; const int32_t _n = 1; 2016-05-24 13:47:43,864 DIAGNOSTIC brian2.devices.device: synapses_synapses_create_generator_codeobject code: cpp_file: #include "code_objects/synapses_synapses_create_generator_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_synapses_create_generator_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// int32_t* __restrict _ptr_array_synapses_N_incoming = _array_synapses_N_incoming; int32_t* __restrict _ptr_array_synapses__synaptic_post = _array_synapses__synaptic_post; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; int32_t* __restrict _ptr_array_synapses_N_outgoing = _array_synapses_N_outgoing; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; int32_t* _ptr_array_synapses_N = _array_synapses_N; int32_t* __restrict _ptr_array_neurongroup_i = _array_neurongroup_i; #include const int _N_pre = N_pre; const int _N_post = N_post; _dynamic_array_synapses_N_incoming.resize(_N_post + _target_offset); _dynamic_array_synapses_N_outgoing.resize(_N_pre + _source_offset); // scalar code const int _vectorisation_idx = -1; for(int _i=0; _i<_num_all_pre; _i++) { bool __cond, _cond; { const bool _cond = true; __cond = _cond; } _cond = __cond; if(!_cond) continue; // Some explanation of this hackery. The problem is that we have multiple code blocks. // Each code block is generated independently of the others, and they declare variables // at the beginning if necessary (including declaring them as const if their values don't // change). However, if two code blocks follow each other in the same C++ scope then // that causes a redeclaration error. So we solve it by putting each block inside a // pair of braces to create a new scope specific to each code block. However, that brings // up another problem: we need the values from these code blocks. I don't have a general // solution to this problem, but in the case of this particular template, we know which // values we need from them so we simply create outer scoped variables to copy the value // into. Later on we have a slightly more complicated problem because the original name // _j has to be used, so we create two variables __j, _j at the outer scope, copy // _j to __j in the inner scope (using the inner scope version of _j), and then // __j to _j in the outer scope (to the outer scope version of _j). This outer scope // version of _j will then be used in subsequent blocks. long _uiter_low; long _uiter_high; long _uiter_step; { const int32_t _iter_high = N_post; const int32_t _iter_step = 1; const int32_t _iter_low = 0; _uiter_low = _iter_low; _uiter_high = _iter_high; _uiter_step = _iter_step; } for(int _k=_uiter_low; _k<_uiter_high; _k+=_uiter_step) { long __j, _j, _pre_idx, __pre_idx; { const int32_t _all_pre = _ptr_array_poissongroup_i[_i]; const int32_t _pre_idx = _all_pre; const int32_t _j = _k; __j = _j; // pick up the locally scoped _j and store in __j __pre_idx = _pre_idx; } _j = __j; // make the previously locally scoped _j available _pre_idx = __pre_idx; if(_j<0 || _j>=_N_post) { cout << "Error: tried to create synapse to neuron j=" << _j << " outside range 0 to " << _N_post-1 << endl; exit(1); } const int32_t _all_post = _ptr_array_neurongroup_i[_j]; const int32_t _post_idx = _all_post; const int32_t _n = 1; for (int _repetition=0; _repetition<_n; _repetition++) { _dynamic_array_synapses_N_outgoing[_pre_idx] += 1; _dynamic_array_synapses_N_incoming[_post_idx] += 1; _dynamic_array_synapses__synaptic_pre.push_back(_pre_idx); _dynamic_array_synapses__synaptic_post.push_back(_post_idx); } } } // now we need to resize all registered variables const int32_t newsize = _dynamic_array_synapses__synaptic_pre.size(); _dynamic_array_synapses__synaptic_post.resize(newsize); _dynamic_array_synapses__synaptic_pre.resize(newsize); _dynamic_array_synapses_Apost.resize(newsize); _dynamic_array_synapses_Apre.resize(newsize); _dynamic_array_synapses_pre_delay.resize(newsize); _dynamic_array_synapses_post_delay.resize(newsize); _dynamic_array_synapses_lastupdate.resize(newsize); _dynamic_array_synapses_w.resize(newsize); // Also update the total number of synapses _ptr_array_synapses_N[0] = newsize; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_synapses_create_generator_codeobject_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_synapses_synapses_create_generator_codeobject #define _INCLUDED_synapses_synapses_create_generator_codeobject #include "objects.h" void _run_synapses_synapses_create_generator_codeobject(); #endif 2016-05-24 13:47:43,864 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_synapses_create_generator_codeobject 2016-05-24 13:47:43,865 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=group_variable_set_conditional) for abstract code: Key condition: _cond = True Key statement: w = rand() * gmax 2016-05-24 13:47:43,879 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* abstract code: Key condition: _cond = True Key statement: w = rand() * gmax 2016-05-24 13:47:43,882 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* snippet (scalar): Key condition: Key statement: 2016-05-24 13:47:43,882 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* snippet (vector): Key condition: const bool _cond = true; Key statement: double w; w = gmax * _rand(_vectorisation_idx); _ptr_array_synapses_w[_idx] = w; 2016-05-24 13:47:43,884 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject code: cpp_file: #include "code_objects/synapses_group_variable_set_conditional_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_group_variable_set_conditional_codeobject() { using namespace brian; ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* _ptr_array_synapses_N = _array_synapses_N; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const int _N = _array_synapses_N[0]; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; const bool _cond = true; if (_cond) { double w; w = gmax * _rand(_vectorisation_idx); _ptr_array_synapses_w[_idx] = w; } } } h_file: #ifndef _INCLUDED_synapses_group_variable_set_conditional_codeobject #define _INCLUDED_synapses_group_variable_set_conditional_codeobject #include "objects.h" void _run_synapses_group_variable_set_conditional_codeobject(); #endif 2016-05-24 13:47:43,884 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_group_variable_set_conditional_codeobject 2016-05-24 13:47:43,884 DIAGNOSTIC brian2.core.names: Created object of class StateMonitor with name statemonitor 2016-05-24 13:47:43,885 DIAGNOSTIC brian2.core.base: Created BrianObject with name statemonitor, clock=Clock(dt=100. * usecond, name='defaultclock'), when=start, order=0 2016-05-24 13:47:43,885 DIAGNOSTIC brian2.core.names: Created object of class SpikeMonitor with name spikemonitor 2016-05-24 13:47:43,886 DIAGNOSTIC brian2.core.base: Created BrianObject with name spikemonitor, clock=Clock(dt=100. * usecond, name='defaultclock'), when=thresholds, order=1 2016-05-24 13:47:43,888 DEBUG brian2.core.magic.magic_objects: Updated MagicNetwork to include 11 objects with names neurongroup_stateupdater, neurongroup_thresholder, synapses_pre, synapses, poissongroup_thresholder, statemonitor, poissongroup, synapses_post, neurongroup, spikemonitor, neurongroup_resetter 2016-05-24 13:47:43,888 DIAGNOSTIC brian2.core.clocks: Setting Clock defaultclock to t=, dt=100. us 2016-05-24 13:47:43,889 DEBUG brian2.core.network.before_run: Preparing network magicnetwork with 11 objects: neurongroup, statemonitor, synapses, neurongroup_stateupdater, neurongroup_thresholder, poissongroup, poissongroup_thresholder, spikemonitor, synapses_pre, synapses_post, neurongroup_resetter 2016-05-24 13:47:43,893 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=statemonitor, template name=statemonitor) for abstract code: _to_record_w = _source_w 2016-05-24 13:47:43,902 DIAGNOSTIC brian2.devices.device: statemonitor_codeobject* abstract code: _to_record_w = _source_w 2016-05-24 13:47:43,904 DIAGNOSTIC brian2.devices.device: statemonitor_codeobject* snippet (scalar): 2016-05-24 13:47:43,904 DIAGNOSTIC brian2.devices.device: statemonitor_codeobject* snippet (vector): const double _source_w = _ptr_array_synapses_w[_idx]; const double _to_record_w = _source_w; 2016-05-24 13:47:43,905 DIAGNOSTIC brian2.devices.device: statemonitor_codeobject code: cpp_file: #include "code_objects/statemonitor_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_statemonitor_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_statemonitor__indices = _array_statemonitor__indices; int32_t* _ptr_array_statemonitor_N = _array_statemonitor_N; double* __restrict _ptr_array_statemonitor_t = _array_statemonitor_t; _dynamic_array_statemonitor_t.push_back(_ptr_array_defaultclock_t[0]); const int _new_size = _dynamic_array_statemonitor_t.size(); // Resize the dynamic arrays _dynamic_array_statemonitor_w.resize(_new_size, _num_indices); // scalar code const int _vectorisation_idx = -1; for (int _i = 0; _i < _num_indices; _i++) { // vector code const int _idx = _ptr_array_statemonitor__indices[_i]; const int _vectorisation_idx = _idx; const double _source_w = _ptr_array_synapses_w[_idx]; const double _to_record_w = _source_w; _dynamic_array_statemonitor_w(_new_size-1, _i) = _to_record_w; } _ptr_array_statemonitor_N[0] = _new_size; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; statemonitor_codeobject_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_statemonitor_codeobject #define _INCLUDED_statemonitor_codeobject #include "objects.h" void _run_statemonitor_codeobject(); #endif 2016-05-24 13:47:43,905 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name statemonitor_codeobject 2016-05-24 13:47:43,906 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=group_variable_set_conditional) for abstract code: Key condition: _cond = True Key statement: lastupdate = t 2016-05-24 13:47:43,911 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* abstract code: Key condition: _cond = True Key statement: lastupdate = t 2016-05-24 13:47:43,914 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* snippet (scalar): Key condition: Key statement: 2016-05-24 13:47:43,914 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject* snippet (vector): Key condition: const bool _cond = true; Key statement: const double t = _ptr_array_defaultclock_t[0]; double lastupdate; lastupdate = t; _ptr_array_synapses_lastupdate[_idx] = lastupdate; 2016-05-24 13:47:43,915 DIAGNOSTIC brian2.devices.device: synapses_group_variable_set_conditional_codeobject_1 code: cpp_file: #include "code_objects/synapses_group_variable_set_conditional_codeobject_1.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_group_variable_set_conditional_codeobject_1() { using namespace brian; ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* _ptr_array_synapses_N = _array_synapses_N; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const int _N = _array_synapses_N[0]; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; const bool _cond = true; if (_cond) { const double t = _ptr_array_defaultclock_t[0]; double lastupdate; lastupdate = t; _ptr_array_synapses_lastupdate[_idx] = lastupdate; } } } h_file: #ifndef _INCLUDED_synapses_group_variable_set_conditional_codeobject_1 #define _INCLUDED_synapses_group_variable_set_conditional_codeobject_1 #include "objects.h" void _run_synapses_group_variable_set_conditional_codeobject_1(); #endif 2016-05-24 13:47:43,915 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_group_variable_set_conditional_codeobject_1 2016-05-24 13:47:44,375 DEBUG brian2.stateupdaters.base.method_choice: Group neurongroup: using numerical integration method linear (took 0.46s) 2016-05-24 13:47:44,378 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=neurongroup, template name=stateupdate) for abstract code: _ge = ge*exp(-dt/taue) _v = El - El*exp(-dt/taum) - ge*taue*(Ee*exp(dt/taue) - Ee*exp(dt/taum) - vr*exp(dt/taue) + vr*exp(dt/taum))*exp(-dt/taue)*exp(-dt/taum)/(taue - taum) + v*exp(-dt/taum) ge = _ge v = _v 2016-05-24 13:47:44,387 DIAGNOSTIC brian2.devices.device: neurongroup_stateupdater_codeobject* abstract code: _ge = ge*exp(-dt/taue) _v = El - El*exp(-dt/taum) - ge*taue*(Ee*exp(dt/taue) - Ee*exp(dt/taum) - vr*exp(dt/taue) + vr*exp(dt/taum))*exp(-dt/taue)*exp(-dt/taum)/(taue - taum) + v*exp(-dt/taum) ge = _ge v = _v 2016-05-24 13:47:44,400 DIAGNOSTIC brian2.devices.device: neurongroup_stateupdater_codeobject* snippet (scalar): const double dt = _ptr_array_defaultclock_dt[0]; const double _lio_1 = exp((- dt) / taue); const double _lio_2 = El - (El * exp((- dt) / taum)); const double _lio_3 = exp((- dt) / taum); const double _lio_4 = (((taue * (((Ee * exp(dt / taue)) + (vr * exp(dt / taum))) - ((Ee * exp(dt / taum)) + (vr * exp(dt / taue))))) * exp((- dt) / taue)) * exp((- dt) / taum)) / (taue - taum); 2016-05-24 13:47:44,400 DIAGNOSTIC brian2.devices.device: neurongroup_stateupdater_codeobject* snippet (vector): double ge = _ptr_array_neurongroup_ge[_idx]; double v = _ptr_array_neurongroup_v[_idx]; const double _ge = _lio_1 * ge; const double _v = (_lio_2 + (_lio_3 * v)) - (_lio_4 * ge); ge = _ge; v = _v; _ptr_array_neurongroup_ge[_idx] = ge; _ptr_array_neurongroup_v[_idx] = v; 2016-05-24 13:47:44,401 DIAGNOSTIC brian2.devices.device: neurongroup_stateupdater_codeobject code: cpp_file: #include "code_objects/neurongroup_stateupdater_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_stateupdater_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_neurongroup_ge = _array_neurongroup_ge; double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const double dt = _ptr_array_defaultclock_dt[0]; const double _lio_1 = exp((- dt) / taue); const double _lio_2 = El - (El * exp((- dt) / taum)); const double _lio_3 = exp((- dt) / taum); const double _lio_4 = (((taue * (((Ee * exp(dt / taue)) + (vr * exp(dt / taum))) - ((Ee * exp(dt / taum)) + (vr * exp(dt / taue))))) * exp((- dt) / taue)) * exp((- dt) / taum)) / (taue - taum); const int _N = N; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; double ge = _ptr_array_neurongroup_ge[_idx]; double v = _ptr_array_neurongroup_v[_idx]; const double _ge = _lio_1 * ge; const double _v = (_lio_2 + (_lio_3 * v)) - (_lio_4 * ge); ge = _ge; v = _v; _ptr_array_neurongroup_ge[_idx] = ge; _ptr_array_neurongroup_v[_idx] = v; } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_stateupdater_codeobject_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_neurongroup_stateupdater_codeobject #define _INCLUDED_neurongroup_stateupdater_codeobject #include "objects.h" void _run_neurongroup_stateupdater_codeobject(); #endif 2016-05-24 13:47:44,402 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name neurongroup_stateupdater_codeobject 2016-05-24 13:47:44,403 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=neurongroup, template name=threshold) for abstract code: _cond = v>vt 2016-05-24 13:47:44,410 DIAGNOSTIC brian2.devices.device: neurongroup_thresholder_codeobject* abstract code: _cond = v>vt 2016-05-24 13:47:44,412 DIAGNOSTIC brian2.devices.device: neurongroup_thresholder_codeobject* snippet (scalar): 2016-05-24 13:47:44,412 DIAGNOSTIC brian2.devices.device: neurongroup_thresholder_codeobject* snippet (vector): const double v = _ptr_array_neurongroup_v[_idx]; const bool _cond = v > vt; 2016-05-24 13:47:44,413 DIAGNOSTIC brian2.devices.device: neurongroup_thresholder_codeobject code: cpp_file: #include "code_objects/neurongroup_thresholder_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_thresholder_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; long _count = 0; for(int _idx=0; _idx vt; if(_cond) { _ptr_array_neurongroup__spikespace[_count++] = _idx; } } _ptr_array_neurongroup__spikespace[N] = _count; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_thresholder_codeobject_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_neurongroup_thresholder_codeobject #define _INCLUDED_neurongroup_thresholder_codeobject #include "objects.h" void _run_neurongroup_thresholder_codeobject(); #endif 2016-05-24 13:47:44,413 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name neurongroup_thresholder_codeobject 2016-05-24 13:47:44,414 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=poissongroup, template name=threshold) for abstract code: _cond = rand() < rates * dt 2016-05-24 13:47:44,416 DIAGNOSTIC brian2.devices.device: poissongroup_thresholder_codeobject* abstract code: _cond = rand() < rates * dt 2016-05-24 13:47:44,418 DIAGNOSTIC brian2.devices.device: poissongroup_thresholder_codeobject* snippet (scalar): 2016-05-24 13:47:44,418 DIAGNOSTIC brian2.devices.device: poissongroup_thresholder_codeobject* snippet (vector): const double dt = _ptr_array_defaultclock_dt[0]; const double rates = _ptr_array_poissongroup_rates[_idx]; const bool _cond = _rand(_vectorisation_idx) < (dt * rates); 2016-05-24 13:47:44,420 DIAGNOSTIC brian2.devices.device: poissongroup_thresholder_codeobject code: cpp_file: #include "code_objects/poissongroup_thresholder_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_poissongroup_thresholder_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; double* __restrict _ptr_array_poissongroup_rates = _array_poissongroup_rates; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; long _count = 0; for(int _idx=0; _idx #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_spikemonitor_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* __restrict _ptr_array_spikemonitor_count = _array_spikemonitor_count; int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; int32_t* __restrict _ptr_array_spikemonitor_i = _array_spikemonitor_i; int32_t* _ptr_array_spikemonitor_N = _array_spikemonitor_N; double* __restrict _ptr_array_spikemonitor_t = _array_spikemonitor_t; int32_t* __restrict _ptr_array_spikemonitor__source_idx = _array_spikemonitor__source_idx; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; //// MAIN CODE //////////// int32_t _num_events = _ptr_array_poissongroup__spikespace[_num_spikespace-1]; if (_num_events > 0) { int _start_idx = _num_events; int _end_idx = _num_events; for(int _j=0; _j<_num_events; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; if (_idx >= _source_start) { _start_idx = _j; break; } } for(int _j=_start_idx; _j<_num_events; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; if (_idx >= _source_stop) { _end_idx = _j; break; } } _num_events = _end_idx - _start_idx; if (_num_events > 0) { const int _vectorisation_idx = 1; for(int _j=_start_idx; _j<_end_idx; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; const int _vectorisation_idx = _idx; const double _source_t = _ptr_array_defaultclock_t[0]; const int32_t _source_i = _ptr_array_poissongroup_i[_idx]; const int32_t _to_record_i = _source_i; const double _to_record_t = _source_t; _dynamic_array_spikemonitor_i.push_back(_to_record_i); _dynamic_array_spikemonitor_t.push_back(_to_record_t); _ptr_array_spikemonitor_count[_idx-_source_start]++; } _ptr_array_spikemonitor_N[0] += _num_events; } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; spikemonitor_codeobject_profiling_info += _run_time; } void _debugmsg_spikemonitor_codeobject() { using namespace brian; %CONSTANTS% double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* __restrict _ptr_array_spikemonitor_count = _array_spikemonitor_count; int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; int32_t* __restrict _ptr_array_spikemonitor_i = _array_spikemonitor_i; int32_t* _ptr_array_spikemonitor_N = _array_spikemonitor_N; double* __restrict _ptr_array_spikemonitor_t = _array_spikemonitor_t; int32_t* __restrict _ptr_array_spikemonitor__source_idx = _array_spikemonitor__source_idx; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; std::cout << "Number of spikes: " << _ptr_array_spikemonitor_N[0] << endl; } main_finalise: _debugmsg_spikemonitor_codeobject(); h_file: #ifndef _INCLUDED_spikemonitor_codeobject #define _INCLUDED_spikemonitor_codeobject #include "objects.h" void _run_spikemonitor_codeobject(); void _debugmsg_spikemonitor_codeobject(); #endif 2016-05-24 13:47:44,434 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name spikemonitor_codeobject 2016-05-24 13:47:44,434 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses_pre, template name=synapses_initialise_queue) for abstract code: 2016-05-24 13:47:44,440 DIAGNOSTIC brian2.devices.device: synapses_pre_initialise_queue abstract code: 2016-05-24 13:47:44,441 DIAGNOSTIC brian2.devices.device: synapses_pre_initialise_queue snippet (scalar): 2016-05-24 13:47:44,441 DIAGNOSTIC brian2.devices.device: synapses_pre_initialise_queue snippet (vector): 2016-05-24 13:47:44,441 DIAGNOSTIC brian2.devices.device: synapses_pre_initialise_queue code: cpp_file: #include "code_objects/synapses_pre_initialise_queue.h" void _run_synapses_pre_initialise_queue() { using namespace brian; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; double* real_delays = synapses_pre.delay.empty() ? 0 : &(synapses_pre.delay[0]); int32_t* sources = synapses_pre.sources.empty() ? 0 : &(synapses_pre.sources[0]); const unsigned int n_delays = synapses_pre.delay.size(); const unsigned int n_synapses = synapses_pre.sources.size(); synapses_pre.prepare(_n_sources, _n_targets, real_delays, n_delays, sources, n_synapses, _ptr_array_defaultclock_dt[0]); } h_file: #ifndef _INCLUDED_synapses_pre_initialise_queue #define _INCLUDED_synapses_pre_initialise_queue void _run_synapses_pre_initialise_queue(); #endif 2016-05-24 13:47:44,441 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_pre_initialise_queue 2016-05-24 13:47:45,475 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=synapses) for abstract code: Apre = Apre*exp(-(t - lastupdate)/taupre) Apost = Apost*exp(-(t - lastupdate)/taupost) ge += w Apre += dApre w = clip(w + Apost, 0, gmax) lastupdate = t 2016-05-24 13:47:45,511 DIAGNOSTIC brian2.devices.device: synapses_pre_codeobject* abstract code: Apre = Apre*exp(-(t - lastupdate)/taupre) Apost = Apost*exp(-(t - lastupdate)/taupost) ge += w Apre += dApre w = clip(w + Apost, 0, gmax) lastupdate = t 2016-05-24 13:47:45,521 DIAGNOSTIC brian2.devices.device: synapses_pre_codeobject* snippet (scalar): const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / taupre; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / taupost; 2016-05-24 13:47:45,521 DIAGNOSTIC brian2.devices.device: synapses_pre_codeobject* snippet (vector): const int32_t _postsynaptic_idx = _ptr_array_synapses__synaptic_post[_idx]; double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; double ge = _ptr_array_neurongroup_ge[_postsynaptic_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); ge += w; Apre += dApre; w = _clip(w + Apost, 0, gmax); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_neurongroup_ge[_postsynaptic_idx] = ge; _ptr_array_synapses_w[_idx] = w; 2016-05-24 13:47:45,523 DIAGNOSTIC brian2.devices.device: synapses_pre_codeobject code: cpp_file: #include "code_objects/synapses_pre_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _clip(const double value, const double a_min, const double a_max) { if (value < a_min) return a_min; if (value > a_max) return a_max; return value; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_pre_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_synapses_Apre = _array_synapses_Apre; double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* __restrict _ptr_array_synapses_Apost = _array_synapses_Apost; double* __restrict _ptr_array_neurongroup_ge = _array_neurongroup_ge; double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_synapses__synaptic_post = _array_synapses__synaptic_post; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; // This is only needed for the _debugmsg function below // scalar code const int _vectorisation_idx = -1; const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / taupre; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / taupost; { std::vector *_spiking_synapses = synapses_pre.peek(); const unsigned int _num_spiking_synapses = _spiking_synapses->size(); { for(unsigned int _spiking_synapse_idx=0; _spiking_synapse_idx<_num_spiking_synapses; _spiking_synapse_idx++) { const int _idx = (*_spiking_synapses)[_spiking_synapse_idx]; const int _vectorisation_idx = _idx; const int32_t _postsynaptic_idx = _ptr_array_synapses__synaptic_post[_idx]; double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; double ge = _ptr_array_neurongroup_ge[_postsynaptic_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); ge += w; Apre += dApre; w = _clip(w + Apost, 0, gmax); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_neurongroup_ge[_postsynaptic_idx] = ge; _ptr_array_synapses_w[_idx] = w; } } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_pre_codeobject_profiling_info += _run_time; } void _debugmsg_synapses_pre_codeobject() { using namespace brian; std::cout << "Number of synapses: " << _dynamic_array_synapses__synaptic_pre.size() << endl; } main_finalise: _debugmsg_synapses_pre_codeobject(); h_file: #ifndef _INCLUDED_synapses_pre_codeobject #define _INCLUDED_synapses_pre_codeobject #include "objects.h" void _run_synapses_pre_codeobject(); void _debugmsg_synapses_pre_codeobject(); #endif 2016-05-24 13:47:45,523 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_pre_codeobject 2016-05-24 13:47:45,523 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses_pre, template name=synapses_push_spikes) for abstract code: 2016-05-24 13:47:45,530 DIAGNOSTIC brian2.devices.device: synapses_pre_push_spikes abstract code: 2016-05-24 13:47:45,531 DIAGNOSTIC brian2.devices.device: synapses_pre_push_spikes snippet (scalar): 2016-05-24 13:47:45,531 DIAGNOSTIC brian2.devices.device: synapses_pre_push_spikes snippet (vector): 2016-05-24 13:47:45,532 DIAGNOSTIC brian2.devices.device: synapses_pre_push_spikes code: cpp_file: #include "code_objects/synapses_pre_push_spikes.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include void _run_synapses_pre_push_spikes() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; //// MAIN CODE //////////// // we do advance at the beginning rather than at the end because it saves us making // a copy of the current spiking synapses { synapses_pre.advance(); synapses_pre.push(_ptr_array_poissongroup__spikespace, _ptr_array_poissongroup__spikespace[_num_spikespace-1]); } // Profiling const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_pre_push_spikes_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_synapses_pre_push_spikes #define _INCLUDED_synapses_pre_push_spikes #include "objects.h" void _run_synapses_pre_push_spikes(); #endif 2016-05-24 13:47:45,532 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_pre_push_spikes 2016-05-24 13:47:45,532 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses_post, template name=synapses_initialise_queue) for abstract code: 2016-05-24 13:47:45,532 DIAGNOSTIC brian2.devices.device: synapses_post_initialise_queue abstract code: 2016-05-24 13:47:45,533 DIAGNOSTIC brian2.devices.device: synapses_post_initialise_queue snippet (scalar): 2016-05-24 13:47:45,533 DIAGNOSTIC brian2.devices.device: synapses_post_initialise_queue snippet (vector): 2016-05-24 13:47:45,534 DIAGNOSTIC brian2.devices.device: synapses_post_initialise_queue code: cpp_file: #include "code_objects/synapses_post_initialise_queue.h" void _run_synapses_post_initialise_queue() { using namespace brian; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; double* real_delays = synapses_post.delay.empty() ? 0 : &(synapses_post.delay[0]); int32_t* sources = synapses_post.sources.empty() ? 0 : &(synapses_post.sources[0]); const unsigned int n_delays = synapses_post.delay.size(); const unsigned int n_synapses = synapses_post.sources.size(); synapses_post.prepare(_n_sources, _n_targets, real_delays, n_delays, sources, n_synapses, _ptr_array_defaultclock_dt[0]); } h_file: #ifndef _INCLUDED_synapses_post_initialise_queue #define _INCLUDED_synapses_post_initialise_queue void _run_synapses_post_initialise_queue(); #endif 2016-05-24 13:47:45,534 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_post_initialise_queue 2016-05-24 13:47:46,156 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=synapses) for abstract code: Apre = Apre*exp(-(t - lastupdate)/taupre) Apost = Apost*exp(-(t - lastupdate)/taupost) Apost += dApost w = clip(w + Apre, 0, gmax) lastupdate = t 2016-05-24 13:47:46,181 DIAGNOSTIC brian2.devices.device: synapses_post_codeobject* abstract code: Apre = Apre*exp(-(t - lastupdate)/taupre) Apost = Apost*exp(-(t - lastupdate)/taupost) Apost += dApost w = clip(w + Apre, 0, gmax) lastupdate = t 2016-05-24 13:47:46,190 DIAGNOSTIC brian2.devices.device: synapses_post_codeobject* snippet (scalar): const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / taupre; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / taupost; 2016-05-24 13:47:46,190 DIAGNOSTIC brian2.devices.device: synapses_post_codeobject* snippet (vector): double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); Apost += dApost; w = _clip(w + Apre, 0, gmax); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_synapses_w[_idx] = w; 2016-05-24 13:47:46,191 DIAGNOSTIC brian2.devices.device: synapses_post_codeobject code: cpp_file: #include "code_objects/synapses_post_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _clip(const double value, const double a_min, const double a_max) { if (value < a_min) return a_min; if (value > a_max) return a_max; return value; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_post_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_synapses_Apre = _array_synapses_Apre; double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* __restrict _ptr_array_synapses_Apost = _array_synapses_Apost; double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; // This is only needed for the _debugmsg function below // scalar code const int _vectorisation_idx = -1; const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / taupre; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / taupost; { std::vector *_spiking_synapses = synapses_post.peek(); const unsigned int _num_spiking_synapses = _spiking_synapses->size(); for(int _spiking_synapse_idx=0; _spiking_synapse_idx<_num_spiking_synapses; _spiking_synapse_idx++) { const int _idx = (*_spiking_synapses)[_spiking_synapse_idx]; const int _vectorisation_idx = _idx; double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); Apost += dApost; w = _clip(w + Apre, 0, gmax); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_synapses_w[_idx] = w; } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_post_codeobject_profiling_info += _run_time; } void _debugmsg_synapses_post_codeobject() { using namespace brian; std::cout << "Number of synapses: " << _dynamic_array_synapses__synaptic_pre.size() << endl; } main_finalise: _debugmsg_synapses_post_codeobject(); h_file: #ifndef _INCLUDED_synapses_post_codeobject #define _INCLUDED_synapses_post_codeobject #include "objects.h" void _run_synapses_post_codeobject(); void _debugmsg_synapses_post_codeobject(); #endif 2016-05-24 13:47:46,192 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_post_codeobject 2016-05-24 13:47:46,192 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses_post, template name=synapses_push_spikes) for abstract code: 2016-05-24 13:47:46,192 DIAGNOSTIC brian2.devices.device: synapses_post_push_spikes abstract code: 2016-05-24 13:47:46,193 DIAGNOSTIC brian2.devices.device: synapses_post_push_spikes snippet (scalar): 2016-05-24 13:47:46,193 DIAGNOSTIC brian2.devices.device: synapses_post_push_spikes snippet (vector): 2016-05-24 13:47:46,194 DIAGNOSTIC brian2.devices.device: synapses_post_push_spikes code: cpp_file: #include "code_objects/synapses_post_push_spikes.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include void _run_synapses_post_push_spikes() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; //// MAIN CODE //////////// // we do advance at the beginning rather than at the end because it saves us making // a copy of the current spiking synapses { synapses_post.advance(); synapses_post.push(_ptr_array_neurongroup__spikespace, _ptr_array_neurongroup__spikespace[_num_spikespace-1]); } // Profiling const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_post_push_spikes_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_synapses_post_push_spikes #define _INCLUDED_synapses_post_push_spikes #include "objects.h" void _run_synapses_post_push_spikes(); #endif 2016-05-24 13:47:46,194 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name synapses_post_push_spikes 2016-05-24 13:47:46,194 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=neurongroup, template name=reset) for abstract code: v = vr 2016-05-24 13:47:46,200 DIAGNOSTIC brian2.devices.device: neurongroup_resetter_codeobject* abstract code: v = vr 2016-05-24 13:47:46,202 DIAGNOSTIC brian2.devices.device: neurongroup_resetter_codeobject* snippet (scalar): 2016-05-24 13:47:46,202 DIAGNOSTIC brian2.devices.device: neurongroup_resetter_codeobject* snippet (vector): double v; v = vr; _ptr_array_neurongroup_v[_idx] = v; 2016-05-24 13:47:46,204 DIAGNOSTIC brian2.devices.device: neurongroup_resetter_codeobject code: cpp_file: #include "code_objects/neurongroup_resetter_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_resetter_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// %CONSTANTS% ///// POINTERS //////////// double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; const int32_t *_events = _ptr_array_neurongroup__spikespace; const int32_t _num_events = _ptr_array_neurongroup__spikespace[N]; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; for(int _index_events=0; _index_events<_num_events; _index_events++) { // vector code const int _idx = _events[_index_events]; const int _vectorisation_idx = _idx; double v; v = vr; _ptr_array_neurongroup_v[_idx] = v; } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_resetter_codeobject_profiling_info += _run_time; } h_file: #ifndef _INCLUDED_neurongroup_resetter_codeobject #define _INCLUDED_neurongroup_resetter_codeobject #include "objects.h" void _run_neurongroup_resetter_codeobject(); #endif 2016-05-24 13:47:46,204 DIAGNOSTIC brian2.core.names: Created object of class CPPStandaloneCodeObject with name neurongroup_resetter_codeobject 2016-05-24 13:47:46,204 DEBUG brian2.core.network.before_run: Network magicnetwork uses 1 clocks: defaultclock (dt=100. us) 2016-05-24 13:47:46,205 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing C++ standalone project to directory STDP_standalone 2016-05-24 13:47:46,205 DIAGNOSTIC brian2.devices.cpp_standalone.device: static arrays: ['_static_array__array_statemonitor__indices'] 2016-05-24 13:47:46,331 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=group_get_indices) for abstract code: _cond = name 2016-05-24 13:47:46,335 DIAGNOSTIC brian2.codegen.codeobject: Creating code object (group=synapses, template name=group_get_indices) for abstract code: _cond = name 2016-05-24 13:47:46,335 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file objects.*: cpp_file: #include "objects.h" #include "synapses_classes.h" #include "brianlib/clocks.h" #include "brianlib/dynamic_array.h" #include "brianlib/stdint_compat.h" #include "network.h" #include #include #include namespace brian { //////////////// networks ///////////////// Network magicnetwork; //////////////// arrays /////////////////// double * _array_defaultclock_dt; const int _num__array_defaultclock_dt = 1; double * _array_defaultclock_t; const int _num__array_defaultclock_t = 1; uint64_t * _array_defaultclock_timestep; const int _num__array_defaultclock_timestep = 1; int32_t * _array_neurongroup__spikespace; const int _num__array_neurongroup__spikespace = 2; double * _array_neurongroup_ge; const int _num__array_neurongroup_ge = 1; int32_t * _array_neurongroup_i; const int _num__array_neurongroup_i = 1; double * _array_neurongroup_v; const int _num__array_neurongroup_v = 1; int32_t * _array_poissongroup__spikespace; const int _num__array_poissongroup__spikespace = 1001; int32_t * _array_poissongroup_i; const int _num__array_poissongroup_i = 1000; double * _array_poissongroup_rates; const int _num__array_poissongroup_rates = 1000; int32_t * _array_spikemonitor__source_idx; const int _num__array_spikemonitor__source_idx = 1000; int32_t * _array_spikemonitor_count; const int _num__array_spikemonitor_count = 1000; int32_t * _array_spikemonitor_N; const int _num__array_spikemonitor_N = 1; int32_t * _array_statemonitor__indices; const int _num__array_statemonitor__indices = 2; int32_t * _array_statemonitor_N; const int _num__array_statemonitor_N = 1; double * _array_statemonitor_w; const int _num__array_statemonitor_w = (0, 2); int32_t * _array_synapses_N; const int _num__array_synapses_N = 1; //////////////// dynamic arrays 1d ///////// std::vector _dynamic_array_spikemonitor_i; std::vector _dynamic_array_spikemonitor_t; std::vector _dynamic_array_statemonitor_t; std::vector _dynamic_array_synapses__synaptic_post; std::vector _dynamic_array_synapses__synaptic_pre; std::vector _dynamic_array_synapses_Apost; std::vector _dynamic_array_synapses_Apre; std::vector _dynamic_array_synapses_lastupdate; std::vector _dynamic_array_synapses_N_incoming; std::vector _dynamic_array_synapses_N_outgoing; std::vector _dynamic_array_synapses_post_delay; std::vector _dynamic_array_synapses_pre_delay; std::vector _dynamic_array_synapses_w; //////////////// dynamic arrays 2d ///////// DynamicArray2D _dynamic_array_statemonitor_w; /////////////// static arrays ///////////// int32_t * _static_array__array_statemonitor__indices; const int _num__static_array__array_statemonitor__indices = 2; //////////////// synapses ///////////////// // synapses SynapticPathway synapses_post( _dynamic_array_synapses_post_delay, _dynamic_array_synapses__synaptic_post, 0, 1); SynapticPathway synapses_pre( _dynamic_array_synapses_pre_delay, _dynamic_array_synapses__synaptic_pre, 0, 1000); //////////////// clocks /////////////////// Clock defaultclock; // attributes will be set in run.cpp // Profiling information for each code object double neurongroup_resetter_codeobject_profiling_info = 0.0; double neurongroup_stateupdater_codeobject_profiling_info = 0.0; double neurongroup_thresholder_codeobject_profiling_info = 0.0; double poissongroup_thresholder_codeobject_profiling_info = 0.0; double spikemonitor_codeobject_profiling_info = 0.0; double statemonitor_codeobject_profiling_info = 0.0; double synapses_group_variable_set_conditional_codeobject_profiling_info = 0.0; double synapses_group_variable_set_conditional_codeobject_1_profiling_info = 0.0; double synapses_post_codeobject_profiling_info = 0.0; double synapses_post_initialise_queue_profiling_info = 0.0; double synapses_post_push_spikes_profiling_info = 0.0; double synapses_pre_codeobject_profiling_info = 0.0; double synapses_pre_initialise_queue_profiling_info = 0.0; double synapses_pre_push_spikes_profiling_info = 0.0; double synapses_synapses_create_generator_codeobject_profiling_info = 0.0; } void _init_arrays() { using namespace brian; // Arrays initialized to 0 _array_statemonitor__indices = new int32_t[2]; for(int i=0; i<2; i++) _array_statemonitor__indices[i] = 0; _array_spikemonitor__source_idx = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor__source_idx[i] = 0; _array_poissongroup__spikespace = new int32_t[1001]; for(int i=0; i<1001; i++) _array_poissongroup__spikespace[i] = 0; _array_neurongroup__spikespace = new int32_t[2]; for(int i=0; i<2; i++) _array_neurongroup__spikespace[i] = 0; _array_spikemonitor_count = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor_count[i] = 0; _array_defaultclock_dt = new double[1]; for(int i=0; i<1; i++) _array_defaultclock_dt[i] = 0; _array_neurongroup_ge = new double[1]; for(int i=0; i<1; i++) _array_neurongroup_ge[i] = 0; _array_poissongroup_i = new int32_t[1000]; for(int i=0; i<1000; i++) _array_poissongroup_i[i] = 0; _array_neurongroup_i = new int32_t[1]; for(int i=0; i<1; i++) _array_neurongroup_i[i] = 0; _array_synapses_N = new int32_t[1]; for(int i=0; i<1; i++) _array_synapses_N[i] = 0; _array_statemonitor_N = new int32_t[1]; for(int i=0; i<1; i++) _array_statemonitor_N[i] = 0; _array_spikemonitor_N = new int32_t[1]; for(int i=0; i<1; i++) _array_spikemonitor_N[i] = 0; _array_poissongroup_rates = new double[1000]; for(int i=0; i<1000; i++) _array_poissongroup_rates[i] = 0; _array_defaultclock_t = new double[1]; for(int i=0; i<1; i++) _array_defaultclock_t[i] = 0; _array_defaultclock_timestep = new uint64_t[1]; for(int i=0; i<1; i++) _array_defaultclock_timestep[i] = 0; _array_neurongroup_v = new double[1]; for(int i=0; i<1; i++) _array_neurongroup_v[i] = 0; // Arrays initialized to an "arange" _array_spikemonitor__source_idx = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor__source_idx[i] = 0 + i; _array_poissongroup_i = new int32_t[1000]; for(int i=0; i<1000; i++) _array_poissongroup_i[i] = 0 + i; _array_neurongroup_i = new int32_t[1]; for(int i=0; i<1; i++) _array_neurongroup_i[i] = 0 + i; // static arrays _static_array__array_statemonitor__indices = new int32_t[2]; } void _load_arrays() { using namespace brian; ifstream f_static_array__array_statemonitor__indices; f_static_array__array_statemonitor__indices.open("static_arrays/_static_array__array_statemonitor__indices", ios::in | ios::binary); if(f_static_array__array_statemonitor__indices.is_open()) { f_static_array__array_statemonitor__indices.read(reinterpret_cast(_static_array__array_statemonitor__indices), 2*sizeof(int32_t)); } else { std::cout << "Error opening static array _static_array__array_statemonitor__indices." << endl; } } void _write_arrays() { using namespace brian; ofstream outfile__array_defaultclock_dt; outfile__array_defaultclock_dt.open("results/_array_defaultclock_dt_-9215759865592636245", ios::binary | ios::out); if(outfile__array_defaultclock_dt.is_open()) { outfile__array_defaultclock_dt.write(reinterpret_cast(_array_defaultclock_dt), 1*sizeof(_array_defaultclock_dt[0])); outfile__array_defaultclock_dt.close(); } else { std::cout << "Error writing output file for _array_defaultclock_dt." << endl; } ofstream outfile__array_defaultclock_t; outfile__array_defaultclock_t.open("results/_array_defaultclock_t_7263079326120112646", ios::binary | ios::out); if(outfile__array_defaultclock_t.is_open()) { outfile__array_defaultclock_t.write(reinterpret_cast(_array_defaultclock_t), 1*sizeof(_array_defaultclock_t[0])); outfile__array_defaultclock_t.close(); } else { std::cout << "Error writing output file for _array_defaultclock_t." << endl; } ofstream outfile__array_defaultclock_timestep; outfile__array_defaultclock_timestep.open("results/_array_defaultclock_timestep_-8300011050550298960", ios::binary | ios::out); if(outfile__array_defaultclock_timestep.is_open()) { outfile__array_defaultclock_timestep.write(reinterpret_cast(_array_defaultclock_timestep), 1*sizeof(_array_defaultclock_timestep[0])); outfile__array_defaultclock_timestep.close(); } else { std::cout << "Error writing output file for _array_defaultclock_timestep." << endl; } ofstream outfile__array_neurongroup__spikespace; outfile__array_neurongroup__spikespace.open("results/_array_neurongroup__spikespace_6291509255835556833", ios::binary | ios::out); if(outfile__array_neurongroup__spikespace.is_open()) { outfile__array_neurongroup__spikespace.write(reinterpret_cast(_array_neurongroup__spikespace), 2*sizeof(_array_neurongroup__spikespace[0])); outfile__array_neurongroup__spikespace.close(); } else { std::cout << "Error writing output file for _array_neurongroup__spikespace." << endl; } ofstream outfile__array_neurongroup_ge; outfile__array_neurongroup_ge.open("results/_array_neurongroup_ge_-3224087547000018603", ios::binary | ios::out); if(outfile__array_neurongroup_ge.is_open()) { outfile__array_neurongroup_ge.write(reinterpret_cast(_array_neurongroup_ge), 1*sizeof(_array_neurongroup_ge[0])); outfile__array_neurongroup_ge.close(); } else { std::cout << "Error writing output file for _array_neurongroup_ge." << endl; } ofstream outfile__array_neurongroup_i; outfile__array_neurongroup_i.open("results/_array_neurongroup_i_-2688036259655650195", ios::binary | ios::out); if(outfile__array_neurongroup_i.is_open()) { outfile__array_neurongroup_i.write(reinterpret_cast(_array_neurongroup_i), 1*sizeof(_array_neurongroup_i[0])); outfile__array_neurongroup_i.close(); } else { std::cout << "Error writing output file for _array_neurongroup_i." << endl; } ofstream outfile__array_neurongroup_v; outfile__array_neurongroup_v.open("results/_array_neurongroup_v_-2688036259655650190", ios::binary | ios::out); if(outfile__array_neurongroup_v.is_open()) { outfile__array_neurongroup_v.write(reinterpret_cast(_array_neurongroup_v), 1*sizeof(_array_neurongroup_v[0])); outfile__array_neurongroup_v.close(); } else { std::cout << "Error writing output file for _array_neurongroup_v." << endl; } ofstream outfile__array_poissongroup__spikespace; outfile__array_poissongroup__spikespace.open("results/_array_poissongroup__spikespace_-4364673061333452130", ios::binary | ios::out); if(outfile__array_poissongroup__spikespace.is_open()) { outfile__array_poissongroup__spikespace.write(reinterpret_cast(_array_poissongroup__spikespace), 1001*sizeof(_array_poissongroup__spikespace[0])); outfile__array_poissongroup__spikespace.close(); } else { std::cout << "Error writing output file for _array_poissongroup__spikespace." << endl; } ofstream outfile__array_poissongroup_i; outfile__array_poissongroup_i.open("results/_array_poissongroup_i_2968481286923345034", ios::binary | ios::out); if(outfile__array_poissongroup_i.is_open()) { outfile__array_poissongroup_i.write(reinterpret_cast(_array_poissongroup_i), 1000*sizeof(_array_poissongroup_i[0])); outfile__array_poissongroup_i.close(); } else { std::cout << "Error writing output file for _array_poissongroup_i." << endl; } ofstream outfile__array_poissongroup_rates; outfile__array_poissongroup_rates.open("results/_array_poissongroup_rates_6241245451607672350", ios::binary | ios::out); if(outfile__array_poissongroup_rates.is_open()) { outfile__array_poissongroup_rates.write(reinterpret_cast(_array_poissongroup_rates), 1000*sizeof(_array_poissongroup_rates[0])); outfile__array_poissongroup_rates.close(); } else { std::cout << "Error writing output file for _array_poissongroup_rates." << endl; } ofstream outfile__array_spikemonitor__source_idx; outfile__array_spikemonitor__source_idx.open("results/_array_spikemonitor__source_idx_-4045852888739339153", ios::binary | ios::out); if(outfile__array_spikemonitor__source_idx.is_open()) { outfile__array_spikemonitor__source_idx.write(reinterpret_cast(_array_spikemonitor__source_idx), 1000*sizeof(_array_spikemonitor__source_idx[0])); outfile__array_spikemonitor__source_idx.close(); } else { std::cout << "Error writing output file for _array_spikemonitor__source_idx." << endl; } ofstream outfile__array_spikemonitor_count; outfile__array_spikemonitor_count.open("results/_array_spikemonitor_count_-3651895352503201284", ios::binary | ios::out); if(outfile__array_spikemonitor_count.is_open()) { outfile__array_spikemonitor_count.write(reinterpret_cast(_array_spikemonitor_count), 1000*sizeof(_array_spikemonitor_count[0])); outfile__array_spikemonitor_count.close(); } else { std::cout << "Error writing output file for _array_spikemonitor_count." << endl; } ofstream outfile__array_spikemonitor_N; outfile__array_spikemonitor_N.open("results/_array_spikemonitor_N_73938390545997659", ios::binary | ios::out); if(outfile__array_spikemonitor_N.is_open()) { outfile__array_spikemonitor_N.write(reinterpret_cast(_array_spikemonitor_N), 1*sizeof(_array_spikemonitor_N[0])); outfile__array_spikemonitor_N.close(); } else { std::cout << "Error writing output file for _array_spikemonitor_N." << endl; } ofstream outfile__array_statemonitor__indices; outfile__array_statemonitor__indices.open("results/_array_statemonitor__indices_6163485638831984707", ios::binary | ios::out); if(outfile__array_statemonitor__indices.is_open()) { outfile__array_statemonitor__indices.write(reinterpret_cast(_array_statemonitor__indices), 2*sizeof(_array_statemonitor__indices[0])); outfile__array_statemonitor__indices.close(); } else { std::cout << "Error writing output file for _array_statemonitor__indices." << endl; } ofstream outfile__array_statemonitor_N; outfile__array_statemonitor_N.open("results/_array_statemonitor_N_1126150466128921572", ios::binary | ios::out); if(outfile__array_statemonitor_N.is_open()) { outfile__array_statemonitor_N.write(reinterpret_cast(_array_statemonitor_N), 1*sizeof(_array_statemonitor_N[0])); outfile__array_statemonitor_N.close(); } else { std::cout << "Error writing output file for _array_statemonitor_N." << endl; } ofstream outfile__array_synapses_N; outfile__array_synapses_N.open("results/_array_synapses_N_-7833853409752232273", ios::binary | ios::out); if(outfile__array_synapses_N.is_open()) { outfile__array_synapses_N.write(reinterpret_cast(_array_synapses_N), 1*sizeof(_array_synapses_N[0])); outfile__array_synapses_N.close(); } else { std::cout << "Error writing output file for _array_synapses_N." << endl; } ofstream outfile__dynamic_array_spikemonitor_i; outfile__dynamic_array_spikemonitor_i.open("results/_dynamic_array_spikemonitor_i_3873805716461528078", ios::binary | ios::out); if(outfile__dynamic_array_spikemonitor_i.is_open()) { if (! _dynamic_array_spikemonitor_i.empty() ) { outfile__dynamic_array_spikemonitor_i.write(reinterpret_cast(&_dynamic_array_spikemonitor_i[0]), _dynamic_array_spikemonitor_i.size()*sizeof(_dynamic_array_spikemonitor_i[0])); outfile__dynamic_array_spikemonitor_i.close(); } } else { std::cout << "Error writing output file for _dynamic_array_spikemonitor_i." << endl; } ofstream outfile__dynamic_array_spikemonitor_t; outfile__dynamic_array_spikemonitor_t.open("results/_dynamic_array_spikemonitor_t_3873805716461528083", ios::binary | ios::out); if(outfile__dynamic_array_spikemonitor_t.is_open()) { if (! _dynamic_array_spikemonitor_t.empty() ) { outfile__dynamic_array_spikemonitor_t.write(reinterpret_cast(&_dynamic_array_spikemonitor_t[0]), _dynamic_array_spikemonitor_t.size()*sizeof(_dynamic_array_spikemonitor_t[0])); outfile__dynamic_array_spikemonitor_t.close(); } } else { std::cout << "Error writing output file for _dynamic_array_spikemonitor_t." << endl; } ofstream outfile__dynamic_array_statemonitor_t; outfile__dynamic_array_statemonitor_t.open("results/_dynamic_array_statemonitor_t_6620044162385838772", ios::binary | ios::out); if(outfile__dynamic_array_statemonitor_t.is_open()) { if (! _dynamic_array_statemonitor_t.empty() ) { outfile__dynamic_array_statemonitor_t.write(reinterpret_cast(&_dynamic_array_statemonitor_t[0]), _dynamic_array_statemonitor_t.size()*sizeof(_dynamic_array_statemonitor_t[0])); outfile__dynamic_array_statemonitor_t.close(); } } else { std::cout << "Error writing output file for _dynamic_array_statemonitor_t." << endl; } ofstream outfile__dynamic_array_synapses__synaptic_post; outfile__dynamic_array_synapses__synaptic_post.open("results/_dynamic_array_synapses__synaptic_post_3840486125387374025", ios::binary | ios::out); if(outfile__dynamic_array_synapses__synaptic_post.is_open()) { if (! _dynamic_array_synapses__synaptic_post.empty() ) { outfile__dynamic_array_synapses__synaptic_post.write(reinterpret_cast(&_dynamic_array_synapses__synaptic_post[0]), _dynamic_array_synapses__synaptic_post.size()*sizeof(_dynamic_array_synapses__synaptic_post[0])); outfile__dynamic_array_synapses__synaptic_post.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses__synaptic_post." << endl; } ofstream outfile__dynamic_array_synapses__synaptic_pre; outfile__dynamic_array_synapses__synaptic_pre.open("results/_dynamic_array_synapses__synaptic_pre_5162992210040840425", ios::binary | ios::out); if(outfile__dynamic_array_synapses__synaptic_pre.is_open()) { if (! _dynamic_array_synapses__synaptic_pre.empty() ) { outfile__dynamic_array_synapses__synaptic_pre.write(reinterpret_cast(&_dynamic_array_synapses__synaptic_pre[0]), _dynamic_array_synapses__synaptic_pre.size()*sizeof(_dynamic_array_synapses__synaptic_pre[0])); outfile__dynamic_array_synapses__synaptic_pre.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses__synaptic_pre." << endl; } ofstream outfile__dynamic_array_synapses_Apost; outfile__dynamic_array_synapses_Apost.open("results/_dynamic_array_synapses_Apost_3034042580529184036", ios::binary | ios::out); if(outfile__dynamic_array_synapses_Apost.is_open()) { if (! _dynamic_array_synapses_Apost.empty() ) { outfile__dynamic_array_synapses_Apost.write(reinterpret_cast(&_dynamic_array_synapses_Apost[0]), _dynamic_array_synapses_Apost.size()*sizeof(_dynamic_array_synapses_Apost[0])); outfile__dynamic_array_synapses_Apost.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_Apost." << endl; } ofstream outfile__dynamic_array_synapses_Apre; outfile__dynamic_array_synapses_Apre.open("results/_dynamic_array_synapses_Apre_-5633892405563205630", ios::binary | ios::out); if(outfile__dynamic_array_synapses_Apre.is_open()) { if (! _dynamic_array_synapses_Apre.empty() ) { outfile__dynamic_array_synapses_Apre.write(reinterpret_cast(&_dynamic_array_synapses_Apre[0]), _dynamic_array_synapses_Apre.size()*sizeof(_dynamic_array_synapses_Apre[0])); outfile__dynamic_array_synapses_Apre.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_Apre." << endl; } ofstream outfile__dynamic_array_synapses_lastupdate; outfile__dynamic_array_synapses_lastupdate.open("results/_dynamic_array_synapses_lastupdate_562699891839928247", ios::binary | ios::out); if(outfile__dynamic_array_synapses_lastupdate.is_open()) { if (! _dynamic_array_synapses_lastupdate.empty() ) { outfile__dynamic_array_synapses_lastupdate.write(reinterpret_cast(&_dynamic_array_synapses_lastupdate[0]), _dynamic_array_synapses_lastupdate.size()*sizeof(_dynamic_array_synapses_lastupdate[0])); outfile__dynamic_array_synapses_lastupdate.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_lastupdate." << endl; } ofstream outfile__dynamic_array_synapses_N_incoming; outfile__dynamic_array_synapses_N_incoming.open("results/_dynamic_array_synapses_N_incoming_6651214916728133133", ios::binary | ios::out); if(outfile__dynamic_array_synapses_N_incoming.is_open()) { if (! _dynamic_array_synapses_N_incoming.empty() ) { outfile__dynamic_array_synapses_N_incoming.write(reinterpret_cast(&_dynamic_array_synapses_N_incoming[0]), _dynamic_array_synapses_N_incoming.size()*sizeof(_dynamic_array_synapses_N_incoming[0])); outfile__dynamic_array_synapses_N_incoming.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_N_incoming." << endl; } ofstream outfile__dynamic_array_synapses_N_outgoing; outfile__dynamic_array_synapses_N_outgoing.open("results/_dynamic_array_synapses_N_outgoing_-3277140854151949897", ios::binary | ios::out); if(outfile__dynamic_array_synapses_N_outgoing.is_open()) { if (! _dynamic_array_synapses_N_outgoing.empty() ) { outfile__dynamic_array_synapses_N_outgoing.write(reinterpret_cast(&_dynamic_array_synapses_N_outgoing[0]), _dynamic_array_synapses_N_outgoing.size()*sizeof(_dynamic_array_synapses_N_outgoing[0])); outfile__dynamic_array_synapses_N_outgoing.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_N_outgoing." << endl; } ofstream outfile__dynamic_array_synapses_post_delay; outfile__dynamic_array_synapses_post_delay.open("results/_dynamic_array_synapses_post_delay_-7661039483155161074", ios::binary | ios::out); if(outfile__dynamic_array_synapses_post_delay.is_open()) { if (! _dynamic_array_synapses_post_delay.empty() ) { outfile__dynamic_array_synapses_post_delay.write(reinterpret_cast(&_dynamic_array_synapses_post_delay[0]), _dynamic_array_synapses_post_delay.size()*sizeof(_dynamic_array_synapses_post_delay[0])); outfile__dynamic_array_synapses_post_delay.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_post_delay." << endl; } ofstream outfile__dynamic_array_synapses_pre_delay; outfile__dynamic_array_synapses_pre_delay.open("results/_dynamic_array_synapses_pre_delay_7653745164894875960", ios::binary | ios::out); if(outfile__dynamic_array_synapses_pre_delay.is_open()) { if (! _dynamic_array_synapses_pre_delay.empty() ) { outfile__dynamic_array_synapses_pre_delay.write(reinterpret_cast(&_dynamic_array_synapses_pre_delay[0]), _dynamic_array_synapses_pre_delay.size()*sizeof(_dynamic_array_synapses_pre_delay[0])); outfile__dynamic_array_synapses_pre_delay.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_pre_delay." << endl; } ofstream outfile__dynamic_array_synapses_w; outfile__dynamic_array_synapses_w.open("results/_dynamic_array_synapses_w_-2614024316621171204", ios::binary | ios::out); if(outfile__dynamic_array_synapses_w.is_open()) { if (! _dynamic_array_synapses_w.empty() ) { outfile__dynamic_array_synapses_w.write(reinterpret_cast(&_dynamic_array_synapses_w[0]), _dynamic_array_synapses_w.size()*sizeof(_dynamic_array_synapses_w[0])); outfile__dynamic_array_synapses_w.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_w." << endl; } ofstream outfile__dynamic_array_statemonitor_w; outfile__dynamic_array_statemonitor_w.open("results/_dynamic_array_statemonitor_w_6620044162385838775", ios::binary | ios::out); if(outfile__dynamic_array_statemonitor_w.is_open()) { for (int n=0; n<_dynamic_array_statemonitor_w.n; n++) { if (! _dynamic_array_statemonitor_w(n).empty()) { outfile__dynamic_array_statemonitor_w.write(reinterpret_cast(&_dynamic_array_statemonitor_w(n, 0)), _dynamic_array_statemonitor_w.m*sizeof(_dynamic_array_statemonitor_w(0, 0))); } } outfile__dynamic_array_statemonitor_w.close(); } else { std::cout << "Error writing output file for _dynamic_array_statemonitor_w." << endl; } // Write profiling info to disk ofstream outfile_profiling_info; outfile_profiling_info.open("results/profiling_info.txt", ios::out); if(outfile_profiling_info.is_open()) { outfile_profiling_info << "neurongroup_resetter_codeobject\t" << neurongroup_resetter_codeobject_profiling_info << std::endl; outfile_profiling_info << "neurongroup_stateupdater_codeobject\t" << neurongroup_stateupdater_codeobject_profiling_info << std::endl; outfile_profiling_info << "neurongroup_thresholder_codeobject\t" << neurongroup_thresholder_codeobject_profiling_info << std::endl; outfile_profiling_info << "poissongroup_thresholder_codeobject\t" << poissongroup_thresholder_codeobject_profiling_info << std::endl; outfile_profiling_info << "spikemonitor_codeobject\t" << spikemonitor_codeobject_profiling_info << std::endl; outfile_profiling_info << "statemonitor_codeobject\t" << statemonitor_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_group_variable_set_conditional_codeobject\t" << synapses_group_variable_set_conditional_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_group_variable_set_conditional_codeobject_1\t" << synapses_group_variable_set_conditional_codeobject_1_profiling_info << std::endl; outfile_profiling_info << "synapses_post_codeobject\t" << synapses_post_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_post_initialise_queue\t" << synapses_post_initialise_queue_profiling_info << std::endl; outfile_profiling_info << "synapses_post_push_spikes\t" << synapses_post_push_spikes_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_codeobject\t" << synapses_pre_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_initialise_queue\t" << synapses_pre_initialise_queue_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_push_spikes\t" << synapses_pre_push_spikes_profiling_info << std::endl; outfile_profiling_info << "synapses_synapses_create_generator_codeobject\t" << synapses_synapses_create_generator_codeobject_profiling_info << std::endl; outfile_profiling_info.close(); } else { std::cout << "Error writing profiling info to file." << std::endl; } // Write last run info to disk ofstream outfile_last_run_info; outfile_last_run_info.open("results/last_run_info.txt", ios::out); if(outfile_last_run_info.is_open()) { outfile_last_run_info << (Network::_last_run_time) << " " << (Network::_last_run_completed_fraction) << std::endl; outfile_last_run_info.close(); } else { std::cout << "Error writing last run info to file." << std::endl; } } void _dealloc_arrays() { using namespace brian; // static arrays if(_static_array__array_statemonitor__indices!=0) { delete [] _static_array__array_statemonitor__indices; _static_array__array_statemonitor__indices = 0; } } h_file: #ifndef _BRIAN_OBJECTS_H #define _BRIAN_OBJECTS_H #include "synapses_classes.h" #include "brianlib/clocks.h" #include "brianlib/dynamic_array.h" #include "brianlib/stdint_compat.h" #include "network.h" #include namespace brian { //////////////// clocks /////////////////// extern Clock defaultclock; //////////////// networks ///////////////// extern Network magicnetwork; extern Network magicnetwork; //////////////// dynamic arrays /////////// extern std::vector _dynamic_array_spikemonitor_i; extern std::vector _dynamic_array_spikemonitor_t; extern std::vector _dynamic_array_statemonitor_t; extern std::vector _dynamic_array_synapses__synaptic_post; extern std::vector _dynamic_array_synapses__synaptic_pre; extern std::vector _dynamic_array_synapses_Apost; extern std::vector _dynamic_array_synapses_Apre; extern std::vector _dynamic_array_synapses_lastupdate; extern std::vector _dynamic_array_synapses_N_incoming; extern std::vector _dynamic_array_synapses_N_outgoing; extern std::vector _dynamic_array_synapses_post_delay; extern std::vector _dynamic_array_synapses_pre_delay; extern std::vector _dynamic_array_synapses_w; //////////////// arrays /////////////////// extern double *_array_defaultclock_dt; extern const int _num__array_defaultclock_dt; extern double *_array_defaultclock_t; extern const int _num__array_defaultclock_t; extern uint64_t *_array_defaultclock_timestep; extern const int _num__array_defaultclock_timestep; extern int32_t *_array_neurongroup__spikespace; extern const int _num__array_neurongroup__spikespace; extern double *_array_neurongroup_ge; extern const int _num__array_neurongroup_ge; extern int32_t *_array_neurongroup_i; extern const int _num__array_neurongroup_i; extern double *_array_neurongroup_v; extern const int _num__array_neurongroup_v; extern int32_t *_array_poissongroup__spikespace; extern const int _num__array_poissongroup__spikespace; extern int32_t *_array_poissongroup_i; extern const int _num__array_poissongroup_i; extern double *_array_poissongroup_rates; extern const int _num__array_poissongroup_rates; extern int32_t *_array_spikemonitor__source_idx; extern const int _num__array_spikemonitor__source_idx; extern int32_t *_array_spikemonitor_count; extern const int _num__array_spikemonitor_count; extern int32_t *_array_spikemonitor_N; extern const int _num__array_spikemonitor_N; extern int32_t *_array_statemonitor__indices; extern const int _num__array_statemonitor__indices; extern int32_t *_array_statemonitor_N; extern const int _num__array_statemonitor_N; extern double *_array_statemonitor_w; extern const int _num__array_statemonitor_w; extern int32_t *_array_synapses_N; extern const int _num__array_synapses_N; //////////////// dynamic arrays 2d ///////// extern DynamicArray2D _dynamic_array_statemonitor_w; /////////////// static arrays ///////////// extern int32_t *_static_array__array_statemonitor__indices; extern const int _num__static_array__array_statemonitor__indices; //////////////// synapses ///////////////// // synapses extern SynapticPathway synapses_post; extern SynapticPathway synapses_pre; // Profiling information for each code object extern double neurongroup_resetter_codeobject_profiling_info; extern double neurongroup_stateupdater_codeobject_profiling_info; extern double neurongroup_thresholder_codeobject_profiling_info; extern double poissongroup_thresholder_codeobject_profiling_info; extern double spikemonitor_codeobject_profiling_info; extern double statemonitor_codeobject_profiling_info; extern double synapses_group_variable_set_conditional_codeobject_profiling_info; extern double synapses_group_variable_set_conditional_codeobject_1_profiling_info; extern double synapses_post_codeobject_profiling_info; extern double synapses_post_initialise_queue_profiling_info; extern double synapses_post_push_spikes_profiling_info; extern double synapses_pre_codeobject_profiling_info; extern double synapses_pre_initialise_queue_profiling_info; extern double synapses_pre_push_spikes_profiling_info; extern double synapses_synapses_create_generator_codeobject_profiling_info; } void _init_arrays(); void _load_arrays(); void _write_arrays(); void _dealloc_arrays(); #endif 2016-05-24 13:47:46,335 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file objects.cpp: #include "objects.h" #include "synapses_classes.h" #include "brianlib/clocks.h" #include "brianlib/dynamic_array.h" #include "brianlib/stdint_compat.h" #include "network.h" #include #include #include namespace brian { //////////////// networks ///////////////// Network magicnetwork; //////////////// arrays /////////////////// double * _array_defaultclock_dt; const int _num__array_defaultclock_dt = 1; double * _array_defaultclock_t; const int _num__array_defaultclock_t = 1; uint64_t * _array_defaultclock_timestep; const int _num__array_defaultclock_timestep = 1; int32_t * _array_neurongroup__spikespace; const int _num__array_neurongroup__spikespace = 2; double * _array_neurongroup_ge; const int _num__array_neurongroup_ge = 1; int32_t * _array_neurongroup_i; const int _num__array_neurongroup_i = 1; double * _array_neurongroup_v; const int _num__array_neurongroup_v = 1; int32_t * _array_poissongroup__spikespace; const int _num__array_poissongroup__spikespace = 1001; int32_t * _array_poissongroup_i; const int _num__array_poissongroup_i = 1000; double * _array_poissongroup_rates; const int _num__array_poissongroup_rates = 1000; int32_t * _array_spikemonitor__source_idx; const int _num__array_spikemonitor__source_idx = 1000; int32_t * _array_spikemonitor_count; const int _num__array_spikemonitor_count = 1000; int32_t * _array_spikemonitor_N; const int _num__array_spikemonitor_N = 1; int32_t * _array_statemonitor__indices; const int _num__array_statemonitor__indices = 2; int32_t * _array_statemonitor_N; const int _num__array_statemonitor_N = 1; double * _array_statemonitor_w; const int _num__array_statemonitor_w = (0, 2); int32_t * _array_synapses_N; const int _num__array_synapses_N = 1; //////////////// dynamic arrays 1d ///////// std::vector _dynamic_array_spikemonitor_i; std::vector _dynamic_array_spikemonitor_t; std::vector _dynamic_array_statemonitor_t; std::vector _dynamic_array_synapses__synaptic_post; std::vector _dynamic_array_synapses__synaptic_pre; std::vector _dynamic_array_synapses_Apost; std::vector _dynamic_array_synapses_Apre; std::vector _dynamic_array_synapses_lastupdate; std::vector _dynamic_array_synapses_N_incoming; std::vector _dynamic_array_synapses_N_outgoing; std::vector _dynamic_array_synapses_post_delay; std::vector _dynamic_array_synapses_pre_delay; std::vector _dynamic_array_synapses_w; //////////////// dynamic arrays 2d ///////// DynamicArray2D _dynamic_array_statemonitor_w; /////////////// static arrays ///////////// int32_t * _static_array__array_statemonitor__indices; const int _num__static_array__array_statemonitor__indices = 2; //////////////// synapses ///////////////// // synapses SynapticPathway synapses_post( _dynamic_array_synapses_post_delay, _dynamic_array_synapses__synaptic_post, 0, 1); SynapticPathway synapses_pre( _dynamic_array_synapses_pre_delay, _dynamic_array_synapses__synaptic_pre, 0, 1000); //////////////// clocks /////////////////// Clock defaultclock; // attributes will be set in run.cpp // Profiling information for each code object double neurongroup_resetter_codeobject_profiling_info = 0.0; double neurongroup_stateupdater_codeobject_profiling_info = 0.0; double neurongroup_thresholder_codeobject_profiling_info = 0.0; double poissongroup_thresholder_codeobject_profiling_info = 0.0; double spikemonitor_codeobject_profiling_info = 0.0; double statemonitor_codeobject_profiling_info = 0.0; double synapses_group_variable_set_conditional_codeobject_profiling_info = 0.0; double synapses_group_variable_set_conditional_codeobject_1_profiling_info = 0.0; double synapses_post_codeobject_profiling_info = 0.0; double synapses_post_initialise_queue_profiling_info = 0.0; double synapses_post_push_spikes_profiling_info = 0.0; double synapses_pre_codeobject_profiling_info = 0.0; double synapses_pre_initialise_queue_profiling_info = 0.0; double synapses_pre_push_spikes_profiling_info = 0.0; double synapses_synapses_create_generator_codeobject_profiling_info = 0.0; } void _init_arrays() { using namespace brian; // Arrays initialized to 0 _array_statemonitor__indices = new int32_t[2]; for(int i=0; i<2; i++) _array_statemonitor__indices[i] = 0; _array_spikemonitor__source_idx = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor__source_idx[i] = 0; _array_poissongroup__spikespace = new int32_t[1001]; for(int i=0; i<1001; i++) _array_poissongroup__spikespace[i] = 0; _array_neurongroup__spikespace = new int32_t[2]; for(int i=0; i<2; i++) _array_neurongroup__spikespace[i] = 0; _array_spikemonitor_count = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor_count[i] = 0; _array_defaultclock_dt = new double[1]; for(int i=0; i<1; i++) _array_defaultclock_dt[i] = 0; _array_neurongroup_ge = new double[1]; for(int i=0; i<1; i++) _array_neurongroup_ge[i] = 0; _array_poissongroup_i = new int32_t[1000]; for(int i=0; i<1000; i++) _array_poissongroup_i[i] = 0; _array_neurongroup_i = new int32_t[1]; for(int i=0; i<1; i++) _array_neurongroup_i[i] = 0; _array_synapses_N = new int32_t[1]; for(int i=0; i<1; i++) _array_synapses_N[i] = 0; _array_statemonitor_N = new int32_t[1]; for(int i=0; i<1; i++) _array_statemonitor_N[i] = 0; _array_spikemonitor_N = new int32_t[1]; for(int i=0; i<1; i++) _array_spikemonitor_N[i] = 0; _array_poissongroup_rates = new double[1000]; for(int i=0; i<1000; i++) _array_poissongroup_rates[i] = 0; _array_defaultclock_t = new double[1]; for(int i=0; i<1; i++) _array_defaultclock_t[i] = 0; _array_defaultclock_timestep = new uint64_t[1]; for(int i=0; i<1; i++) _array_defaultclock_timestep[i] = 0; _array_neurongroup_v = new double[1]; for(int i=0; i<1; i++) _array_neurongroup_v[i] = 0; // Arrays initialized to an "arange" _array_spikemonitor__source_idx = new int32_t[1000]; for(int i=0; i<1000; i++) _array_spikemonitor__source_idx[i] = 0 + i; _array_poissongroup_i = new int32_t[1000]; for(int i=0; i<1000; i++) _array_poissongroup_i[i] = 0 + i; _array_neurongroup_i = new int32_t[1]; for(int i=0; i<1; i++) _array_neurongroup_i[i] = 0 + i; // static arrays _static_array__array_statemonitor__indices = new int32_t[2]; } void _load_arrays() { using namespace brian; ifstream f_static_array__array_statemonitor__indices; f_static_array__array_statemonitor__indices.open("static_arrays/_static_array__array_statemonitor__indices", ios::in | ios::binary); if(f_static_array__array_statemonitor__indices.is_open()) { f_static_array__array_statemonitor__indices.read(reinterpret_cast(_static_array__array_statemonitor__indices), 2*sizeof(int32_t)); } else { std::cout << "Error opening static array _static_array__array_statemonitor__indices." << endl; } } void _write_arrays() { using namespace brian; ofstream outfile__array_defaultclock_dt; outfile__array_defaultclock_dt.open("results/_array_defaultclock_dt_-9215759865592636245", ios::binary | ios::out); if(outfile__array_defaultclock_dt.is_open()) { outfile__array_defaultclock_dt.write(reinterpret_cast(_array_defaultclock_dt), 1*sizeof(_array_defaultclock_dt[0])); outfile__array_defaultclock_dt.close(); } else { std::cout << "Error writing output file for _array_defaultclock_dt." << endl; } ofstream outfile__array_defaultclock_t; outfile__array_defaultclock_t.open("results/_array_defaultclock_t_7263079326120112646", ios::binary | ios::out); if(outfile__array_defaultclock_t.is_open()) { outfile__array_defaultclock_t.write(reinterpret_cast(_array_defaultclock_t), 1*sizeof(_array_defaultclock_t[0])); outfile__array_defaultclock_t.close(); } else { std::cout << "Error writing output file for _array_defaultclock_t." << endl; } ofstream outfile__array_defaultclock_timestep; outfile__array_defaultclock_timestep.open("results/_array_defaultclock_timestep_-8300011050550298960", ios::binary | ios::out); if(outfile__array_defaultclock_timestep.is_open()) { outfile__array_defaultclock_timestep.write(reinterpret_cast(_array_defaultclock_timestep), 1*sizeof(_array_defaultclock_timestep[0])); outfile__array_defaultclock_timestep.close(); } else { std::cout << "Error writing output file for _array_defaultclock_timestep." << endl; } ofstream outfile__array_neurongroup__spikespace; outfile__array_neurongroup__spikespace.open("results/_array_neurongroup__spikespace_6291509255835556833", ios::binary | ios::out); if(outfile__array_neurongroup__spikespace.is_open()) { outfile__array_neurongroup__spikespace.write(reinterpret_cast(_array_neurongroup__spikespace), 2*sizeof(_array_neurongroup__spikespace[0])); outfile__array_neurongroup__spikespace.close(); } else { std::cout << "Error writing output file for _array_neurongroup__spikespace." << endl; } ofstream outfile__array_neurongroup_ge; outfile__array_neurongroup_ge.open("results/_array_neurongroup_ge_-3224087547000018603", ios::binary | ios::out); if(outfile__array_neurongroup_ge.is_open()) { outfile__array_neurongroup_ge.write(reinterpret_cast(_array_neurongroup_ge), 1*sizeof(_array_neurongroup_ge[0])); outfile__array_neurongroup_ge.close(); } else { std::cout << "Error writing output file for _array_neurongroup_ge." << endl; } ofstream outfile__array_neurongroup_i; outfile__array_neurongroup_i.open("results/_array_neurongroup_i_-2688036259655650195", ios::binary | ios::out); if(outfile__array_neurongroup_i.is_open()) { outfile__array_neurongroup_i.write(reinterpret_cast(_array_neurongroup_i), 1*sizeof(_array_neurongroup_i[0])); outfile__array_neurongroup_i.close(); } else { std::cout << "Error writing output file for _array_neurongroup_i." << endl; } ofstream outfile__array_neurongroup_v; outfile__array_neurongroup_v.open("results/_array_neurongroup_v_-2688036259655650190", ios::binary | ios::out); if(outfile__array_neurongroup_v.is_open()) { outfile__array_neurongroup_v.write(reinterpret_cast(_array_neurongroup_v), 1*sizeof(_array_neurongroup_v[0])); outfile__array_neurongroup_v.close(); } else { std::cout << "Error writing output file for _array_neurongroup_v." << endl; } ofstream outfile__array_poissongroup__spikespace; outfile__array_poissongroup__spikespace.open("results/_array_poissongroup__spikespace_-4364673061333452130", ios::binary | ios::out); if(outfile__array_poissongroup__spikespace.is_open()) { outfile__array_poissongroup__spikespace.write(reinterpret_cast(_array_poissongroup__spikespace), 1001*sizeof(_array_poissongroup__spikespace[0])); outfile__array_poissongroup__spikespace.close(); } else { std::cout << "Error writing output file for _array_poissongroup__spikespace." << endl; } ofstream outfile__array_poissongroup_i; outfile__array_poissongroup_i.open("results/_array_poissongroup_i_2968481286923345034", ios::binary | ios::out); if(outfile__array_poissongroup_i.is_open()) { outfile__array_poissongroup_i.write(reinterpret_cast(_array_poissongroup_i), 1000*sizeof(_array_poissongroup_i[0])); outfile__array_poissongroup_i.close(); } else { std::cout << "Error writing output file for _array_poissongroup_i." << endl; } ofstream outfile__array_poissongroup_rates; outfile__array_poissongroup_rates.open("results/_array_poissongroup_rates_6241245451607672350", ios::binary | ios::out); if(outfile__array_poissongroup_rates.is_open()) { outfile__array_poissongroup_rates.write(reinterpret_cast(_array_poissongroup_rates), 1000*sizeof(_array_poissongroup_rates[0])); outfile__array_poissongroup_rates.close(); } else { std::cout << "Error writing output file for _array_poissongroup_rates." << endl; } ofstream outfile__array_spikemonitor__source_idx; outfile__array_spikemonitor__source_idx.open("results/_array_spikemonitor__source_idx_-4045852888739339153", ios::binary | ios::out); if(outfile__array_spikemonitor__source_idx.is_open()) { outfile__array_spikemonitor__source_idx.write(reinterpret_cast(_array_spikemonitor__source_idx), 1000*sizeof(_array_spikemonitor__source_idx[0])); outfile__array_spikemonitor__source_idx.close(); } else { std::cout << "Error writing output file for _array_spikemonitor__source_idx." << endl; } ofstream outfile__array_spikemonitor_count; outfile__array_spikemonitor_count.open("results/_array_spikemonitor_count_-3651895352503201284", ios::binary | ios::out); if(outfile__array_spikemonitor_count.is_open()) { outfile__array_spikemonitor_count.write(reinterpret_cast(_array_spikemonitor_count), 1000*sizeof(_array_spikemonitor_count[0])); outfile__array_spikemonitor_count.close(); } else { std::cout << "Error writing output file for _array_spikemonitor_count." << endl; } ofstream outfile__array_spikemonitor_N; outfile__array_spikemonitor_N.open("results/_array_spikemonitor_N_73938390545997659", ios::binary | ios::out); if(outfile__array_spikemonitor_N.is_open()) { outfile__array_spikemonitor_N.write(reinterpret_cast(_array_spikemonitor_N), 1*sizeof(_array_spikemonitor_N[0])); outfile__array_spikemonitor_N.close(); } else { std::cout << "Error writing output file for _array_spikemonitor_N." << endl; } ofstream outfile__array_statemonitor__indices; outfile__array_statemonitor__indices.open("results/_array_statemonitor__indices_6163485638831984707", ios::binary | ios::out); if(outfile__array_statemonitor__indices.is_open()) { outfile__array_statemonitor__indices.write(reinterpret_cast(_array_statemonitor__indices), 2*sizeof(_array_statemonitor__indices[0])); outfile__array_statemonitor__indices.close(); } else { std::cout << "Error writing output file for _array_statemonitor__indices." << endl; } ofstream outfile__array_statemonitor_N; outfile__array_statemonitor_N.open("results/_array_statemonitor_N_1126150466128921572", ios::binary | ios::out); if(outfile__array_statemonitor_N.is_open()) { outfile__array_statemonitor_N.write(reinterpret_cast(_array_statemonitor_N), 1*sizeof(_array_statemonitor_N[0])); outfile__array_statemonitor_N.close(); } else { std::cout << "Error writing output file for _array_statemonitor_N." << endl; } ofstream outfile__array_synapses_N; outfile__array_synapses_N.open("results/_array_synapses_N_-7833853409752232273", ios::binary | ios::out); if(outfile__array_synapses_N.is_open()) { outfile__array_synapses_N.write(reinterpret_cast(_array_synapses_N), 1*sizeof(_array_synapses_N[0])); outfile__array_synapses_N.close(); } else { std::cout << "Error writing output file for _array_synapses_N." << endl; } ofstream outfile__dynamic_array_spikemonitor_i; outfile__dynamic_array_spikemonitor_i.open("results/_dynamic_array_spikemonitor_i_3873805716461528078", ios::binary | ios::out); if(outfile__dynamic_array_spikemonitor_i.is_open()) { if (! _dynamic_array_spikemonitor_i.empty() ) { outfile__dynamic_array_spikemonitor_i.write(reinterpret_cast(&_dynamic_array_spikemonitor_i[0]), _dynamic_array_spikemonitor_i.size()*sizeof(_dynamic_array_spikemonitor_i[0])); outfile__dynamic_array_spikemonitor_i.close(); } } else { std::cout << "Error writing output file for _dynamic_array_spikemonitor_i." << endl; } ofstream outfile__dynamic_array_spikemonitor_t; outfile__dynamic_array_spikemonitor_t.open("results/_dynamic_array_spikemonitor_t_3873805716461528083", ios::binary | ios::out); if(outfile__dynamic_array_spikemonitor_t.is_open()) { if (! _dynamic_array_spikemonitor_t.empty() ) { outfile__dynamic_array_spikemonitor_t.write(reinterpret_cast(&_dynamic_array_spikemonitor_t[0]), _dynamic_array_spikemonitor_t.size()*sizeof(_dynamic_array_spikemonitor_t[0])); outfile__dynamic_array_spikemonitor_t.close(); } } else { std::cout << "Error writing output file for _dynamic_array_spikemonitor_t." << endl; } ofstream outfile__dynamic_array_statemonitor_t; outfile__dynamic_array_statemonitor_t.open("results/_dynamic_array_statemonitor_t_6620044162385838772", ios::binary | ios::out); if(outfile__dynamic_array_statemonitor_t.is_open()) { if (! _dynamic_array_statemonitor_t.empty() ) { outfile__dynamic_array_statemonitor_t.write(reinterpret_cast(&_dynamic_array_statemonitor_t[0]), _dynamic_array_statemonitor_t.size()*sizeof(_dynamic_array_statemonitor_t[0])); outfile__dynamic_array_statemonitor_t.close(); } } else { std::cout << "Error writing output file for _dynamic_array_statemonitor_t." << endl; } ofstream outfile__dynamic_array_synapses__synaptic_post; outfile__dynamic_array_synapses__synaptic_post.open("results/_dynamic_array_synapses__synaptic_post_3840486125387374025", ios::binary | ios::out); if(outfile__dynamic_array_synapses__synaptic_post.is_open()) { if (! _dynamic_array_synapses__synaptic_post.empty() ) { outfile__dynamic_array_synapses__synaptic_post.write(reinterpret_cast(&_dynamic_array_synapses__synaptic_post[0]), _dynamic_array_synapses__synaptic_post.size()*sizeof(_dynamic_array_synapses__synaptic_post[0])); outfile__dynamic_array_synapses__synaptic_post.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses__synaptic_post." << endl; } ofstream outfile__dynamic_array_synapses__synaptic_pre; outfile__dynamic_array_synapses__synaptic_pre.open("results/_dynamic_array_synapses__synaptic_pre_5162992210040840425", ios::binary | ios::out); if(outfile__dynamic_array_synapses__synaptic_pre.is_open()) { if (! _dynamic_array_synapses__synaptic_pre.empty() ) { outfile__dynamic_array_synapses__synaptic_pre.write(reinterpret_cast(&_dynamic_array_synapses__synaptic_pre[0]), _dynamic_array_synapses__synaptic_pre.size()*sizeof(_dynamic_array_synapses__synaptic_pre[0])); outfile__dynamic_array_synapses__synaptic_pre.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses__synaptic_pre." << endl; } ofstream outfile__dynamic_array_synapses_Apost; outfile__dynamic_array_synapses_Apost.open("results/_dynamic_array_synapses_Apost_3034042580529184036", ios::binary | ios::out); if(outfile__dynamic_array_synapses_Apost.is_open()) { if (! _dynamic_array_synapses_Apost.empty() ) { outfile__dynamic_array_synapses_Apost.write(reinterpret_cast(&_dynamic_array_synapses_Apost[0]), _dynamic_array_synapses_Apost.size()*sizeof(_dynamic_array_synapses_Apost[0])); outfile__dynamic_array_synapses_Apost.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_Apost." << endl; } ofstream outfile__dynamic_array_synapses_Apre; outfile__dynamic_array_synapses_Apre.open("results/_dynamic_array_synapses_Apre_-5633892405563205630", ios::binary | ios::out); if(outfile__dynamic_array_synapses_Apre.is_open()) { if (! _dynamic_array_synapses_Apre.empty() ) { outfile__dynamic_array_synapses_Apre.write(reinterpret_cast(&_dynamic_array_synapses_Apre[0]), _dynamic_array_synapses_Apre.size()*sizeof(_dynamic_array_synapses_Apre[0])); outfile__dynamic_array_synapses_Apre.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_Apre." << endl; } ofstream outfile__dynamic_array_synapses_lastupdate; outfile__dynamic_array_synapses_lastupdate.open("results/_dynamic_array_synapses_lastupdate_562699891839928247", ios::binary | ios::out); if(outfile__dynamic_array_synapses_lastupdate.is_open()) { if (! _dynamic_array_synapses_lastupdate.empty() ) { outfile__dynamic_array_synapses_lastupdate.write(reinterpret_cast(&_dynamic_array_synapses_lastupdate[0]), _dynamic_array_synapses_lastupdate.size()*sizeof(_dynamic_array_synapses_lastupdate[0])); outfile__dynamic_array_synapses_lastupdate.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_lastupdate." << endl; } ofstream outfile__dynamic_array_synapses_N_incoming; outfile__dynamic_array_synapses_N_incoming.open("results/_dynamic_array_synapses_N_incoming_6651214916728133133", ios::binary | ios::out); if(outfile__dynamic_array_synapses_N_incoming.is_open()) { if (! _dynamic_array_synapses_N_incoming.empty() ) { outfile__dynamic_array_synapses_N_incoming.write(reinterpret_cast(&_dynamic_array_synapses_N_incoming[0]), _dynamic_array_synapses_N_incoming.size()*sizeof(_dynamic_array_synapses_N_incoming[0])); outfile__dynamic_array_synapses_N_incoming.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_N_incoming." << endl; } ofstream outfile__dynamic_array_synapses_N_outgoing; outfile__dynamic_array_synapses_N_outgoing.open("results/_dynamic_array_synapses_N_outgoing_-3277140854151949897", ios::binary | ios::out); if(outfile__dynamic_array_synapses_N_outgoing.is_open()) { if (! _dynamic_array_synapses_N_outgoing.empty() ) { outfile__dynamic_array_synapses_N_outgoing.write(reinterpret_cast(&_dynamic_array_synapses_N_outgoing[0]), _dynamic_array_synapses_N_outgoing.size()*sizeof(_dynamic_array_synapses_N_outgoing[0])); outfile__dynamic_array_synapses_N_outgoing.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_N_outgoing." << endl; } ofstream outfile__dynamic_array_synapses_post_delay; outfile__dynamic_array_synapses_post_delay.open("results/_dynamic_array_synapses_post_delay_-7661039483155161074", ios::binary | ios::out); if(outfile__dynamic_array_synapses_post_delay.is_open()) { if (! _dynamic_array_synapses_post_delay.empty() ) { outfile__dynamic_array_synapses_post_delay.write(reinterpret_cast(&_dynamic_array_synapses_post_delay[0]), _dynamic_array_synapses_post_delay.size()*sizeof(_dynamic_array_synapses_post_delay[0])); outfile__dynamic_array_synapses_post_delay.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_post_delay." << endl; } ofstream outfile__dynamic_array_synapses_pre_delay; outfile__dynamic_array_synapses_pre_delay.open("results/_dynamic_array_synapses_pre_delay_7653745164894875960", ios::binary | ios::out); if(outfile__dynamic_array_synapses_pre_delay.is_open()) { if (! _dynamic_array_synapses_pre_delay.empty() ) { outfile__dynamic_array_synapses_pre_delay.write(reinterpret_cast(&_dynamic_array_synapses_pre_delay[0]), _dynamic_array_synapses_pre_delay.size()*sizeof(_dynamic_array_synapses_pre_delay[0])); outfile__dynamic_array_synapses_pre_delay.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_pre_delay." << endl; } ofstream outfile__dynamic_array_synapses_w; outfile__dynamic_array_synapses_w.open("results/_dynamic_array_synapses_w_-2614024316621171204", ios::binary | ios::out); if(outfile__dynamic_array_synapses_w.is_open()) { if (! _dynamic_array_synapses_w.empty() ) { outfile__dynamic_array_synapses_w.write(reinterpret_cast(&_dynamic_array_synapses_w[0]), _dynamic_array_synapses_w.size()*sizeof(_dynamic_array_synapses_w[0])); outfile__dynamic_array_synapses_w.close(); } } else { std::cout << "Error writing output file for _dynamic_array_synapses_w." << endl; } ofstream outfile__dynamic_array_statemonitor_w; outfile__dynamic_array_statemonitor_w.open("results/_dynamic_array_statemonitor_w_6620044162385838775", ios::binary | ios::out); if(outfile__dynamic_array_statemonitor_w.is_open()) { for (int n=0; n<_dynamic_array_statemonitor_w.n; n++) { if (! _dynamic_array_statemonitor_w(n).empty()) { outfile__dynamic_array_statemonitor_w.write(reinterpret_cast(&_dynamic_array_statemonitor_w(n, 0)), _dynamic_array_statemonitor_w.m*sizeof(_dynamic_array_statemonitor_w(0, 0))); } } outfile__dynamic_array_statemonitor_w.close(); } else { std::cout << "Error writing output file for _dynamic_array_statemonitor_w." << endl; } // Write profiling info to disk ofstream outfile_profiling_info; outfile_profiling_info.open("results/profiling_info.txt", ios::out); if(outfile_profiling_info.is_open()) { outfile_profiling_info << "neurongroup_resetter_codeobject\t" << neurongroup_resetter_codeobject_profiling_info << std::endl; outfile_profiling_info << "neurongroup_stateupdater_codeobject\t" << neurongroup_stateupdater_codeobject_profiling_info << std::endl; outfile_profiling_info << "neurongroup_thresholder_codeobject\t" << neurongroup_thresholder_codeobject_profiling_info << std::endl; outfile_profiling_info << "poissongroup_thresholder_codeobject\t" << poissongroup_thresholder_codeobject_profiling_info << std::endl; outfile_profiling_info << "spikemonitor_codeobject\t" << spikemonitor_codeobject_profiling_info << std::endl; outfile_profiling_info << "statemonitor_codeobject\t" << statemonitor_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_group_variable_set_conditional_codeobject\t" << synapses_group_variable_set_conditional_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_group_variable_set_conditional_codeobject_1\t" << synapses_group_variable_set_conditional_codeobject_1_profiling_info << std::endl; outfile_profiling_info << "synapses_post_codeobject\t" << synapses_post_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_post_initialise_queue\t" << synapses_post_initialise_queue_profiling_info << std::endl; outfile_profiling_info << "synapses_post_push_spikes\t" << synapses_post_push_spikes_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_codeobject\t" << synapses_pre_codeobject_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_initialise_queue\t" << synapses_pre_initialise_queue_profiling_info << std::endl; outfile_profiling_info << "synapses_pre_push_spikes\t" << synapses_pre_push_spikes_profiling_info << std::endl; outfile_profiling_info << "synapses_synapses_create_generator_codeobject\t" << synapses_synapses_create_generator_codeobject_profiling_info << std::endl; outfile_profiling_info.close(); } else { std::cout << "Error writing profiling info to file." << std::endl; } // Write last run info to disk ofstream outfile_last_run_info; outfile_last_run_info.open("results/last_run_info.txt", ios::out); if(outfile_last_run_info.is_open()) { outfile_last_run_info << (Network::_last_run_time) << " " << (Network::_last_run_completed_fraction) << std::endl; outfile_last_run_info.close(); } else { std::cout << "Error writing last run info to file." << std::endl; } } void _dealloc_arrays() { using namespace brian; // static arrays if(_static_array__array_statemonitor__indices!=0) { delete [] _static_array__array_statemonitor__indices; _static_array__array_statemonitor__indices = 0; } } 2016-05-24 13:47:46,335 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file objects.h: #ifndef _BRIAN_OBJECTS_H #define _BRIAN_OBJECTS_H #include "synapses_classes.h" #include "brianlib/clocks.h" #include "brianlib/dynamic_array.h" #include "brianlib/stdint_compat.h" #include "network.h" #include namespace brian { //////////////// clocks /////////////////// extern Clock defaultclock; //////////////// networks ///////////////// extern Network magicnetwork; extern Network magicnetwork; //////////////// dynamic arrays /////////// extern std::vector _dynamic_array_spikemonitor_i; extern std::vector _dynamic_array_spikemonitor_t; extern std::vector _dynamic_array_statemonitor_t; extern std::vector _dynamic_array_synapses__synaptic_post; extern std::vector _dynamic_array_synapses__synaptic_pre; extern std::vector _dynamic_array_synapses_Apost; extern std::vector _dynamic_array_synapses_Apre; extern std::vector _dynamic_array_synapses_lastupdate; extern std::vector _dynamic_array_synapses_N_incoming; extern std::vector _dynamic_array_synapses_N_outgoing; extern std::vector _dynamic_array_synapses_post_delay; extern std::vector _dynamic_array_synapses_pre_delay; extern std::vector _dynamic_array_synapses_w; //////////////// arrays /////////////////// extern double *_array_defaultclock_dt; extern const int _num__array_defaultclock_dt; extern double *_array_defaultclock_t; extern const int _num__array_defaultclock_t; extern uint64_t *_array_defaultclock_timestep; extern const int _num__array_defaultclock_timestep; extern int32_t *_array_neurongroup__spikespace; extern const int _num__array_neurongroup__spikespace; extern double *_array_neurongroup_ge; extern const int _num__array_neurongroup_ge; extern int32_t *_array_neurongroup_i; extern const int _num__array_neurongroup_i; extern double *_array_neurongroup_v; extern const int _num__array_neurongroup_v; extern int32_t *_array_poissongroup__spikespace; extern const int _num__array_poissongroup__spikespace; extern int32_t *_array_poissongroup_i; extern const int _num__array_poissongroup_i; extern double *_array_poissongroup_rates; extern const int _num__array_poissongroup_rates; extern int32_t *_array_spikemonitor__source_idx; extern const int _num__array_spikemonitor__source_idx; extern int32_t *_array_spikemonitor_count; extern const int _num__array_spikemonitor_count; extern int32_t *_array_spikemonitor_N; extern const int _num__array_spikemonitor_N; extern int32_t *_array_statemonitor__indices; extern const int _num__array_statemonitor__indices; extern int32_t *_array_statemonitor_N; extern const int _num__array_statemonitor_N; extern double *_array_statemonitor_w; extern const int _num__array_statemonitor_w; extern int32_t *_array_synapses_N; extern const int _num__array_synapses_N; //////////////// dynamic arrays 2d ///////// extern DynamicArray2D _dynamic_array_statemonitor_w; /////////////// static arrays ///////////// extern int32_t *_static_array__array_statemonitor__indices; extern const int _num__static_array__array_statemonitor__indices; //////////////// synapses ///////////////// // synapses extern SynapticPathway synapses_post; extern SynapticPathway synapses_pre; // Profiling information for each code object extern double neurongroup_resetter_codeobject_profiling_info; extern double neurongroup_stateupdater_codeobject_profiling_info; extern double neurongroup_thresholder_codeobject_profiling_info; extern double poissongroup_thresholder_codeobject_profiling_info; extern double spikemonitor_codeobject_profiling_info; extern double statemonitor_codeobject_profiling_info; extern double synapses_group_variable_set_conditional_codeobject_profiling_info; extern double synapses_group_variable_set_conditional_codeobject_1_profiling_info; extern double synapses_post_codeobject_profiling_info; extern double synapses_post_initialise_queue_profiling_info; extern double synapses_post_push_spikes_profiling_info; extern double synapses_pre_codeobject_profiling_info; extern double synapses_pre_initialise_queue_profiling_info; extern double synapses_pre_push_spikes_profiling_info; extern double synapses_synapses_create_generator_codeobject_profiling_info; } void _init_arrays(); void _load_arrays(); void _write_arrays(); void _dealloc_arrays(); #endif 2016-05-24 13:47:46,339 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file main.cpp: #include #include "objects.h" #include #include #include "run.h" #include "brianlib/common_math.h" #include "code_objects/neurongroup_resetter_codeobject.h" #include "code_objects/synapses_pre_push_spikes.h" #include "code_objects/synapses_post_codeobject.h" #include "code_objects/spikemonitor_codeobject.h" #include "code_objects/synapses_post_push_spikes.h" #include "code_objects/synapses_synapses_create_generator_codeobject.h" #include "code_objects/synapses_post_initialise_queue.h" #include "code_objects/synapses_pre_codeobject.h" #include "code_objects/statemonitor_codeobject.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject_1.h" #include "code_objects/neurongroup_thresholder_codeobject.h" #include "code_objects/poissongroup_thresholder_codeobject.h" #include "code_objects/neurongroup_stateupdater_codeobject.h" #include "code_objects/synapses_pre_initialise_queue.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject.h" #include #include void report_progress(const double elapsed, const double completed, const double start, const double duration) { if (completed == 0.0) { std::cout << "Starting simulation at t=" << start << " s for duration " << duration << " s"; } else { std::cout << completed*duration << " s (" << (int)(completed*100.) << "%) simulated in " << elapsed << " s"; if (completed < 1.0) { const int remaining = (int)((1-completed)/completed*elapsed+0.5); std::cout << ", estimated " << remaining << " s remaining."; } } std::cout << std::endl << std::flush; } int main(int argc, char **argv) { brian_start(); { using namespace brian; _array_defaultclock_dt[0] = 0.0001; _array_defaultclock_dt[0] = 0.0001; _array_defaultclock_dt[0] = 0.0001; for(int i=0; i<_num__array_poissongroup_rates; i++) { _array_poissongroup_rates[i] = 15.0; } _run_synapses_synapses_create_generator_codeobject(); _run_synapses_group_variable_set_conditional_codeobject(); for(int i=0; i<_num__array_statemonitor__indices; i++) { _array_statemonitor__indices[i] = _static_array__array_statemonitor__indices[i]; } _array_defaultclock_timestep[0] = 0L; _array_defaultclock_t[0] = 0.0; _run_synapses_group_variable_set_conditional_codeobject_1(); _run_synapses_pre_initialise_queue(); _run_synapses_post_initialise_queue(); magicnetwork.clear(); magicnetwork.add(&defaultclock, _run_statemonitor_codeobject); magicnetwork.add(&defaultclock, _run_neurongroup_stateupdater_codeobject); magicnetwork.add(&defaultclock, _run_neurongroup_thresholder_codeobject); magicnetwork.add(&defaultclock, _run_poissongroup_thresholder_codeobject); magicnetwork.add(&defaultclock, _run_spikemonitor_codeobject); magicnetwork.add(&defaultclock, _run_synapses_pre_push_spikes); magicnetwork.add(&defaultclock, _run_synapses_pre_codeobject); magicnetwork.add(&defaultclock, _run_synapses_post_push_spikes); magicnetwork.add(&defaultclock, _run_synapses_post_codeobject); magicnetwork.add(&defaultclock, _run_neurongroup_resetter_codeobject); magicnetwork.run(100.0, report_progress, 10.0); _debugmsg_synapses_post_codeobject(); _debugmsg_spikemonitor_codeobject(); _debugmsg_synapses_pre_codeobject(); } brian_end(); return 0; } 2016-05-24 13:47:46,341 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_resetter_codeobject.cpp: #include "objects.h" #include "code_objects/neurongroup_resetter_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_resetter_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _numv = 1; const int _num_spikespace = 2; ///// POINTERS //////////// double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; const int32_t *_events = _ptr_array_neurongroup__spikespace; const int32_t _num_events = _ptr_array_neurongroup__spikespace[1]; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; for(int _index_events=0; _index_events<_num_events; _index_events++) { // vector code const int _idx = _events[_index_events]; const int _vectorisation_idx = _idx; double v; v = (-0.06); _ptr_array_neurongroup_v[_idx] = v; } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_resetter_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,341 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_resetter_codeobject.h: #ifndef _INCLUDED_neurongroup_resetter_codeobject #define _INCLUDED_neurongroup_resetter_codeobject #include "objects.h" void _run_neurongroup_resetter_codeobject(); #endif 2016-05-24 13:47:46,341 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_push_spikes.cpp: #include "objects.h" #include "code_objects/synapses_pre_push_spikes.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include void _run_synapses_pre_push_spikes() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_spikespace = 1001; ///// POINTERS //////////// int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; //// MAIN CODE //////////// // we do advance at the beginning rather than at the end because it saves us making // a copy of the current spiking synapses { synapses_pre.advance(); synapses_pre.push(_ptr_array_poissongroup__spikespace, _ptr_array_poissongroup__spikespace[_num_spikespace-1]); } // Profiling const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_pre_push_spikes_profiling_info += _run_time; } 2016-05-24 13:47:46,341 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_push_spikes.h: #ifndef _INCLUDED_synapses_pre_push_spikes #define _INCLUDED_synapses_pre_push_spikes #include "objects.h" void _run_synapses_pre_push_spikes(); #endif 2016-05-24 13:47:46,343 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_codeobject.cpp: #include "objects.h" #include "code_objects/synapses_post_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _clip(const double value, const double a_min, const double a_max) { if (value < a_min) return a_min; if (value > a_max) return a_max; return value; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_post_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// double* const _array_synapses_Apre = _dynamic_array_synapses_Apre.empty()? 0 : &_dynamic_array_synapses_Apre[0]; const int _numApre = _dynamic_array_synapses_Apre.size(); double* const _array_synapses_lastupdate = _dynamic_array_synapses_lastupdate.empty()? 0 : &_dynamic_array_synapses_lastupdate[0]; const int _numlastupdate = _dynamic_array_synapses_lastupdate.size(); double* const _array_synapses_Apost = _dynamic_array_synapses_Apost.empty()? 0 : &_dynamic_array_synapses_Apost[0]; const int _numApost = _dynamic_array_synapses_Apost.size(); const int _numt = 1; double* const _array_synapses_w = _dynamic_array_synapses_w.empty()? 0 : &_dynamic_array_synapses_w[0]; const int _numw = _dynamic_array_synapses_w.size(); int32_t* const _array_synapses__synaptic_pre = _dynamic_array_synapses__synaptic_pre.empty()? 0 : &_dynamic_array_synapses__synaptic_pre[0]; const int _num_synaptic_pre = _dynamic_array_synapses__synaptic_pre.size(); ///// POINTERS //////////// double* __restrict _ptr_array_synapses_Apre = _array_synapses_Apre; double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* __restrict _ptr_array_synapses_Apost = _array_synapses_Apost; double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; // This is only needed for the _debugmsg function below // scalar code const int _vectorisation_idx = -1; const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / 0.02; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / 0.02; { std::vector *_spiking_synapses = synapses_post.peek(); const unsigned int _num_spiking_synapses = _spiking_synapses->size(); for(int _spiking_synapse_idx=0; _spiking_synapse_idx<_num_spiking_synapses; _spiking_synapse_idx++) { const int _idx = (*_spiking_synapses)[_spiking_synapse_idx]; const int _vectorisation_idx = _idx; double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); Apost += (-0.000105); w = _clip(w + Apre, 0, 0.01); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_synapses_w[_idx] = w; } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_post_codeobject_profiling_info += _run_time; } void _debugmsg_synapses_post_codeobject() { using namespace brian; std::cout << "Number of synapses: " << _dynamic_array_synapses__synaptic_pre.size() << endl; } 2016-05-24 13:47:46,343 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_codeobject.h: #ifndef _INCLUDED_synapses_post_codeobject #define _INCLUDED_synapses_post_codeobject #include "objects.h" void _run_synapses_post_codeobject(); void _debugmsg_synapses_post_codeobject(); #endif 2016-05-24 13:47:46,345 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/spikemonitor_codeobject.cpp: #include "objects.h" #include "code_objects/spikemonitor_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_spikemonitor_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_source_t = 1; const int _numcount = 1000; const int _num_clock_t = 1; const int _num_spikespace = 1001; int32_t* const _array_spikemonitor_i = _dynamic_array_spikemonitor_i.empty()? 0 : &_dynamic_array_spikemonitor_i[0]; const int _numi = _dynamic_array_spikemonitor_i.size(); const int _numN = 1; double* const _array_spikemonitor_t = _dynamic_array_spikemonitor_t.empty()? 0 : &_dynamic_array_spikemonitor_t[0]; const int _numt = _dynamic_array_spikemonitor_t.size(); const int _num_source_idx = 1000; const int _num_source_i = 1000; ///// POINTERS //////////// double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* __restrict _ptr_array_spikemonitor_count = _array_spikemonitor_count; int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; int32_t* __restrict _ptr_array_spikemonitor_i = _array_spikemonitor_i; int32_t* _ptr_array_spikemonitor_N = _array_spikemonitor_N; double* __restrict _ptr_array_spikemonitor_t = _array_spikemonitor_t; int32_t* __restrict _ptr_array_spikemonitor__source_idx = _array_spikemonitor__source_idx; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; //// MAIN CODE //////////// int32_t _num_events = _ptr_array_poissongroup__spikespace[_num_spikespace-1]; if (_num_events > 0) { int _start_idx = _num_events; int _end_idx = _num_events; for(int _j=0; _j<_num_events; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; if (_idx >= 0) { _start_idx = _j; break; } } for(int _j=_start_idx; _j<_num_events; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; if (_idx >= 1000) { _end_idx = _j; break; } } _num_events = _end_idx - _start_idx; if (_num_events > 0) { const int _vectorisation_idx = 1; for(int _j=_start_idx; _j<_end_idx; _j++) { const int _idx = _ptr_array_poissongroup__spikespace[_j]; const int _vectorisation_idx = _idx; const double _source_t = _ptr_array_defaultclock_t[0]; const int32_t _source_i = _ptr_array_poissongroup_i[_idx]; const int32_t _to_record_i = _source_i; const double _to_record_t = _source_t; _dynamic_array_spikemonitor_i.push_back(_to_record_i); _dynamic_array_spikemonitor_t.push_back(_to_record_t); _ptr_array_spikemonitor_count[_idx-0]++; } _ptr_array_spikemonitor_N[0] += _num_events; } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; spikemonitor_codeobject_profiling_info += _run_time; } void _debugmsg_spikemonitor_codeobject() { using namespace brian; const int _num_source_t = 1; const int _numcount = 1000; const int _num_clock_t = 1; const int _num_spikespace = 1001; int32_t* const _array_spikemonitor_i = _dynamic_array_spikemonitor_i.empty()? 0 : &_dynamic_array_spikemonitor_i[0]; const int _numi = _dynamic_array_spikemonitor_i.size(); const int _numN = 1; double* const _array_spikemonitor_t = _dynamic_array_spikemonitor_t.empty()? 0 : &_dynamic_array_spikemonitor_t[0]; const int _numt = _dynamic_array_spikemonitor_t.size(); const int _num_source_idx = 1000; const int _num_source_i = 1000; double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* __restrict _ptr_array_spikemonitor_count = _array_spikemonitor_count; int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; int32_t* __restrict _ptr_array_spikemonitor_i = _array_spikemonitor_i; int32_t* _ptr_array_spikemonitor_N = _array_spikemonitor_N; double* __restrict _ptr_array_spikemonitor_t = _array_spikemonitor_t; int32_t* __restrict _ptr_array_spikemonitor__source_idx = _array_spikemonitor__source_idx; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; std::cout << "Number of spikes: " << _ptr_array_spikemonitor_N[0] << endl; } 2016-05-24 13:47:46,345 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/spikemonitor_codeobject.h: #ifndef _INCLUDED_spikemonitor_codeobject #define _INCLUDED_spikemonitor_codeobject #include "objects.h" void _run_spikemonitor_codeobject(); void _debugmsg_spikemonitor_codeobject(); #endif 2016-05-24 13:47:46,345 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_push_spikes.cpp: #include "objects.h" #include "code_objects/synapses_post_push_spikes.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include void _run_synapses_post_push_spikes() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_spikespace = 2; ///// POINTERS //////////// int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; //// MAIN CODE //////////// // we do advance at the beginning rather than at the end because it saves us making // a copy of the current spiking synapses { synapses_post.advance(); synapses_post.push(_ptr_array_neurongroup__spikespace, _ptr_array_neurongroup__spikespace[_num_spikespace-1]); } // Profiling const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_post_push_spikes_profiling_info += _run_time; } 2016-05-24 13:47:46,345 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_push_spikes.h: #ifndef _INCLUDED_synapses_post_push_spikes #define _INCLUDED_synapses_post_push_spikes #include "objects.h" void _run_synapses_post_push_spikes(); #endif 2016-05-24 13:47:46,347 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_synapses_create_generator_codeobject.cpp: #include "objects.h" #include "code_objects/synapses_synapses_create_generator_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_synapses_create_generator_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// int32_t* const _array_synapses_N_incoming = _dynamic_array_synapses_N_incoming.empty()? 0 : &_dynamic_array_synapses_N_incoming[0]; const int _numN_incoming = _dynamic_array_synapses_N_incoming.size(); int32_t* const _array_synapses__synaptic_post = _dynamic_array_synapses__synaptic_post.empty()? 0 : &_dynamic_array_synapses__synaptic_post[0]; const int _num_synaptic_post = _dynamic_array_synapses__synaptic_post.size(); int32_t* const _array_synapses__synaptic_pre = _dynamic_array_synapses__synaptic_pre.empty()? 0 : &_dynamic_array_synapses__synaptic_pre[0]; const int _num_synaptic_pre = _dynamic_array_synapses__synaptic_pre.size(); int32_t* const _array_synapses_N_outgoing = _dynamic_array_synapses_N_outgoing.empty()? 0 : &_dynamic_array_synapses_N_outgoing[0]; const int _numN_outgoing = _dynamic_array_synapses_N_outgoing.size(); const int _num_all_pre = 1000; const int _numN = 1; const int _num_all_post = 1; ///// POINTERS //////////// int32_t* __restrict _ptr_array_synapses_N_incoming = _array_synapses_N_incoming; int32_t* __restrict _ptr_array_synapses__synaptic_post = _array_synapses__synaptic_post; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; int32_t* __restrict _ptr_array_synapses_N_outgoing = _array_synapses_N_outgoing; int32_t* __restrict _ptr_array_poissongroup_i = _array_poissongroup_i; int32_t* _ptr_array_synapses_N = _array_synapses_N; int32_t* __restrict _ptr_array_neurongroup_i = _array_neurongroup_i; #include const int _N_pre = 1000; const int _N_post = 1; _dynamic_array_synapses_N_incoming.resize(_N_post + 0); _dynamic_array_synapses_N_outgoing.resize(_N_pre + 0); // scalar code const int _vectorisation_idx = -1; for(int _i=0; _i<_num_all_pre; _i++) { bool __cond, _cond; { const bool _cond = true; __cond = _cond; } _cond = __cond; if(!_cond) continue; // Some explanation of this hackery. The problem is that we have multiple code blocks. // Each code block is generated independently of the others, and they declare variables // at the beginning if necessary (including declaring them as const if their values don't // change). However, if two code blocks follow each other in the same C++ scope then // that causes a redeclaration error. So we solve it by putting each block inside a // pair of braces to create a new scope specific to each code block. However, that brings // up another problem: we need the values from these code blocks. I don't have a general // solution to this problem, but in the case of this particular template, we know which // values we need from them so we simply create outer scoped variables to copy the value // into. Later on we have a slightly more complicated problem because the original name // _j has to be used, so we create two variables __j, _j at the outer scope, copy // _j to __j in the inner scope (using the inner scope version of _j), and then // __j to _j in the outer scope (to the outer scope version of _j). This outer scope // version of _j will then be used in subsequent blocks. long _uiter_low; long _uiter_high; long _uiter_step; { const int32_t _iter_high = 1; const int32_t _iter_step = 1; const int32_t _iter_low = 0; _uiter_low = _iter_low; _uiter_high = _iter_high; _uiter_step = _iter_step; } for(int _k=_uiter_low; _k<_uiter_high; _k+=_uiter_step) { long __j, _j, _pre_idx, __pre_idx; { const int32_t _all_pre = _ptr_array_poissongroup_i[_i]; const int32_t _pre_idx = _all_pre; const int32_t _j = _k; __j = _j; // pick up the locally scoped _j and store in __j __pre_idx = _pre_idx; } _j = __j; // make the previously locally scoped _j available _pre_idx = __pre_idx; if(_j<0 || _j>=_N_post) { cout << "Error: tried to create synapse to neuron j=" << _j << " outside range 0 to " << _N_post-1 << endl; exit(1); } const int32_t _all_post = _ptr_array_neurongroup_i[_j]; const int32_t _post_idx = _all_post; const int32_t _n = 1; for (int _repetition=0; _repetition<_n; _repetition++) { _dynamic_array_synapses_N_outgoing[_pre_idx] += 1; _dynamic_array_synapses_N_incoming[_post_idx] += 1; _dynamic_array_synapses__synaptic_pre.push_back(_pre_idx); _dynamic_array_synapses__synaptic_post.push_back(_post_idx); } } } // now we need to resize all registered variables const int32_t newsize = _dynamic_array_synapses__synaptic_pre.size(); _dynamic_array_synapses__synaptic_post.resize(newsize); _dynamic_array_synapses__synaptic_pre.resize(newsize); _dynamic_array_synapses_Apost.resize(newsize); _dynamic_array_synapses_Apre.resize(newsize); _dynamic_array_synapses_pre_delay.resize(newsize); _dynamic_array_synapses_post_delay.resize(newsize); _dynamic_array_synapses_lastupdate.resize(newsize); _dynamic_array_synapses_w.resize(newsize); // Also update the total number of synapses _ptr_array_synapses_N[0] = newsize; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_synapses_create_generator_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,348 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_synapses_create_generator_codeobject.h: #ifndef _INCLUDED_synapses_synapses_create_generator_codeobject #define _INCLUDED_synapses_synapses_create_generator_codeobject #include "objects.h" void _run_synapses_synapses_create_generator_codeobject(); #endif 2016-05-24 13:47:46,348 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_initialise_queue.cpp: #include "objects.h" #include "code_objects/synapses_post_initialise_queue.h" void _run_synapses_post_initialise_queue() { using namespace brian; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; double* real_delays = synapses_post.delay.empty() ? 0 : &(synapses_post.delay[0]); int32_t* sources = synapses_post.sources.empty() ? 0 : &(synapses_post.sources[0]); const unsigned int n_delays = synapses_post.delay.size(); const unsigned int n_synapses = synapses_post.sources.size(); synapses_post.prepare(1, 1000, real_delays, n_delays, sources, n_synapses, _ptr_array_defaultclock_dt[0]); } 2016-05-24 13:47:46,348 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_post_initialise_queue.h: #ifndef _INCLUDED_synapses_post_initialise_queue #define _INCLUDED_synapses_post_initialise_queue void _run_synapses_post_initialise_queue(); #endif 2016-05-24 13:47:46,350 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_codeobject.cpp: #include "objects.h" #include "code_objects/synapses_pre_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include #include "brianlib/stdint_compat.h" #include "synapses_classes.h" ////// SUPPORT CODE /////// namespace { inline double _clip(const double value, const double a_min, const double a_max) { if (value < a_min) return a_min; if (value > a_max) return a_max; return value; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_pre_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// double* const _array_synapses_Apre = _dynamic_array_synapses_Apre.empty()? 0 : &_dynamic_array_synapses_Apre[0]; const int _numApre = _dynamic_array_synapses_Apre.size(); double* const _array_synapses_lastupdate = _dynamic_array_synapses_lastupdate.empty()? 0 : &_dynamic_array_synapses_lastupdate[0]; const int _numlastupdate = _dynamic_array_synapses_lastupdate.size(); double* const _array_synapses_Apost = _dynamic_array_synapses_Apost.empty()? 0 : &_dynamic_array_synapses_Apost[0]; const int _numApost = _dynamic_array_synapses_Apost.size(); const int _numge = 1; const int _numt = 1; double* const _array_synapses_w = _dynamic_array_synapses_w.empty()? 0 : &_dynamic_array_synapses_w[0]; const int _numw = _dynamic_array_synapses_w.size(); int32_t* const _array_synapses__synaptic_post = _dynamic_array_synapses__synaptic_post.empty()? 0 : &_dynamic_array_synapses__synaptic_post[0]; const int _num_postsynaptic_idx = _dynamic_array_synapses__synaptic_post.size(); int32_t* const _array_synapses__synaptic_pre = _dynamic_array_synapses__synaptic_pre.empty()? 0 : &_dynamic_array_synapses__synaptic_pre[0]; const int _num_synaptic_pre = _dynamic_array_synapses__synaptic_pre.size(); ///// POINTERS //////////// double* __restrict _ptr_array_synapses_Apre = _array_synapses_Apre; double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* __restrict _ptr_array_synapses_Apost = _array_synapses_Apost; double* __restrict _ptr_array_neurongroup_ge = _array_neurongroup_ge; double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_synapses__synaptic_post = _array_synapses__synaptic_post; int32_t* __restrict _ptr_array_synapses__synaptic_pre = _array_synapses__synaptic_pre; // This is only needed for the _debugmsg function below // scalar code const int _vectorisation_idx = -1; const double t = _ptr_array_defaultclock_t[0]; const double _lio_1 = 1.0 / 0.02; const double _lio_2 = 0.0 - t; const double _lio_3 = 1.0 / 0.02; { std::vector *_spiking_synapses = synapses_pre.peek(); const unsigned int _num_spiking_synapses = _spiking_synapses->size(); { for(unsigned int _spiking_synapse_idx=0; _spiking_synapse_idx<_num_spiking_synapses; _spiking_synapse_idx++) { const int _idx = (*_spiking_synapses)[_spiking_synapse_idx]; const int _vectorisation_idx = _idx; const int32_t _postsynaptic_idx = _ptr_array_synapses__synaptic_post[_idx]; double Apre = _ptr_array_synapses_Apre[_idx]; double lastupdate = _ptr_array_synapses_lastupdate[_idx]; double Apost = _ptr_array_synapses_Apost[_idx]; double ge = _ptr_array_neurongroup_ge[_postsynaptic_idx]; const double t = _ptr_array_defaultclock_t[0]; double w = _ptr_array_synapses_w[_idx]; Apre *= exp(_lio_1 * (_lio_2 + lastupdate)); Apost *= exp(_lio_3 * (_lio_2 + lastupdate)); ge += w; Apre += 0.0001; w = _clip(w + Apost, 0, 0.01); lastupdate = t; _ptr_array_synapses_Apre[_idx] = Apre; _ptr_array_synapses_lastupdate[_idx] = lastupdate; _ptr_array_synapses_Apost[_idx] = Apost; _ptr_array_neurongroup_ge[_postsynaptic_idx] = ge; _ptr_array_synapses_w[_idx] = w; } } } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; synapses_pre_codeobject_profiling_info += _run_time; } void _debugmsg_synapses_pre_codeobject() { using namespace brian; std::cout << "Number of synapses: " << _dynamic_array_synapses__synaptic_pre.size() << endl; } 2016-05-24 13:47:46,350 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_codeobject.h: #ifndef _INCLUDED_synapses_pre_codeobject #define _INCLUDED_synapses_pre_codeobject #include "objects.h" void _run_synapses_pre_codeobject(); void _debugmsg_synapses_pre_codeobject(); #endif 2016-05-24 13:47:46,350 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/statemonitor_codeobject.cpp: #include "objects.h" #include "code_objects/statemonitor_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_statemonitor_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_clock_t = 1; double* const _array_synapses_w = _dynamic_array_synapses_w.empty()? 0 : &_dynamic_array_synapses_w[0]; const int _num_source_w = _dynamic_array_synapses_w.size(); const int _num_indices = 2; const int _numN = 1; double* const _array_statemonitor_t = _dynamic_array_statemonitor_t.empty()? 0 : &_dynamic_array_statemonitor_t[0]; const int _numt = _dynamic_array_statemonitor_t.size(); ///// POINTERS //////////// double* _ptr_array_defaultclock_t = _array_defaultclock_t; double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* __restrict _ptr_array_statemonitor__indices = _array_statemonitor__indices; int32_t* _ptr_array_statemonitor_N = _array_statemonitor_N; double* __restrict _ptr_array_statemonitor_t = _array_statemonitor_t; _dynamic_array_statemonitor_t.push_back(_ptr_array_defaultclock_t[0]); const int _new_size = _dynamic_array_statemonitor_t.size(); // Resize the dynamic arrays _dynamic_array_statemonitor_w.resize(_new_size, _num_indices); // scalar code const int _vectorisation_idx = -1; for (int _i = 0; _i < _num_indices; _i++) { // vector code const int _idx = _ptr_array_statemonitor__indices[_i]; const int _vectorisation_idx = _idx; const double _source_w = _ptr_array_synapses_w[_idx]; const double _to_record_w = _source_w; _dynamic_array_statemonitor_w(_new_size-1, _i) = _to_record_w; } _ptr_array_statemonitor_N[0] = _new_size; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; statemonitor_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,351 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/statemonitor_codeobject.h: #ifndef _INCLUDED_statemonitor_codeobject #define _INCLUDED_statemonitor_codeobject #include "objects.h" void _run_statemonitor_codeobject(); #endif 2016-05-24 13:47:46,351 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_group_variable_set_conditional_codeobject_1.cpp: #include "objects.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject_1.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_group_variable_set_conditional_codeobject_1() { using namespace brian; ///// CONSTANTS /////////// double* const _array_synapses_lastupdate = _dynamic_array_synapses_lastupdate.empty()? 0 : &_dynamic_array_synapses_lastupdate[0]; const int _numlastupdate = _dynamic_array_synapses_lastupdate.size(); const int _numt = 1; const int _numN = 1; ///// POINTERS //////////// double* __restrict _ptr_array_synapses_lastupdate = _array_synapses_lastupdate; double* _ptr_array_defaultclock_t = _array_defaultclock_t; int32_t* _ptr_array_synapses_N = _array_synapses_N; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const int _N = _array_synapses_N[0]; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; const bool _cond = true; if (_cond) { const double t = _ptr_array_defaultclock_t[0]; double lastupdate; lastupdate = t; _ptr_array_synapses_lastupdate[_idx] = lastupdate; } } } 2016-05-24 13:47:46,351 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_group_variable_set_conditional_codeobject_1.h: #ifndef _INCLUDED_synapses_group_variable_set_conditional_codeobject_1 #define _INCLUDED_synapses_group_variable_set_conditional_codeobject_1 #include "objects.h" void _run_synapses_group_variable_set_conditional_codeobject_1(); #endif 2016-05-24 13:47:46,352 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_thresholder_codeobject.cpp: #include "objects.h" #include "code_objects/neurongroup_thresholder_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_thresholder_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_spikespace = 2; const int _numv = 1; ///// POINTERS //////////// int32_t* __restrict _ptr_array_neurongroup__spikespace = _array_neurongroup__spikespace; double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; long _count = 0; for(int _idx=0; _idx<1; _idx++) { const int _vectorisation_idx = _idx; const double v = _ptr_array_neurongroup_v[_idx]; const bool _cond = v > (-0.054); if(_cond) { _ptr_array_neurongroup__spikespace[_count++] = _idx; } } _ptr_array_neurongroup__spikespace[1] = _count; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_thresholder_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,352 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_thresholder_codeobject.h: #ifndef _INCLUDED_neurongroup_thresholder_codeobject #define _INCLUDED_neurongroup_thresholder_codeobject #include "objects.h" void _run_neurongroup_thresholder_codeobject(); #endif 2016-05-24 13:47:46,353 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/poissongroup_thresholder_codeobject.cpp: #include "objects.h" #include "code_objects/poissongroup_thresholder_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_poissongroup_thresholder_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _num_spikespace = 1001; const int _numrates = 1000; const int _numdt = 1; ///// POINTERS //////////// int32_t* __restrict _ptr_array_poissongroup__spikespace = _array_poissongroup__spikespace; double* __restrict _ptr_array_poissongroup_rates = _array_poissongroup_rates; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; long _count = 0; for(int _idx=0; _idx<1000; _idx++) { const int _vectorisation_idx = _idx; const double dt = _ptr_array_defaultclock_dt[0]; const double rates = _ptr_array_poissongroup_rates[_idx]; const bool _cond = _rand(_vectorisation_idx) < (dt * rates); if(_cond) { _ptr_array_poissongroup__spikespace[_count++] = _idx; } } _ptr_array_poissongroup__spikespace[1000] = _count; const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; poissongroup_thresholder_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,353 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/poissongroup_thresholder_codeobject.h: #ifndef _INCLUDED_poissongroup_thresholder_codeobject #define _INCLUDED_poissongroup_thresholder_codeobject #include "objects.h" void _run_poissongroup_thresholder_codeobject(); #endif 2016-05-24 13:47:46,356 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_stateupdater_codeobject.cpp: #include "objects.h" #include "code_objects/neurongroup_stateupdater_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include #include ////// SUPPORT CODE /////// namespace { inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_neurongroup_stateupdater_codeobject() { using namespace brian; const std::clock_t _start_time = std::clock(); ///// CONSTANTS /////////// const int _numge = 1; const int _numv = 1; const int _numdt = 1; ///// POINTERS //////////// double* __restrict _ptr_array_neurongroup_ge = _array_neurongroup_ge; double* __restrict _ptr_array_neurongroup_v = _array_neurongroup_v; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const double dt = _ptr_array_defaultclock_dt[0]; const double _lio_1 = exp((- dt) / 0.005); const double _lio_2 = (-0.074) - ((-0.074) * exp((- dt) / 0.01)); const double _lio_3 = exp((- dt) / 0.01); const double _lio_4 = (((0.005 * (((0.0 * exp(dt / 0.005)) + ((-0.06) * exp(dt / 0.01))) - ((0.0 * exp(dt / 0.01)) + ((-0.06) * exp(dt / 0.005))))) * exp((- dt) / 0.005)) * exp((- dt) / 0.01)) / (0.005 - 0.01); const int _N = 1; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; double ge = _ptr_array_neurongroup_ge[_idx]; double v = _ptr_array_neurongroup_v[_idx]; const double _ge = _lio_1 * ge; const double _v = (_lio_2 + (_lio_3 * v)) - (_lio_4 * ge); ge = _ge; v = _v; _ptr_array_neurongroup_ge[_idx] = ge; _ptr_array_neurongroup_v[_idx] = v; } const double _run_time = (double)(std::clock() -_start_time)/CLOCKS_PER_SEC; neurongroup_stateupdater_codeobject_profiling_info += _run_time; } 2016-05-24 13:47:46,356 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/neurongroup_stateupdater_codeobject.h: #ifndef _INCLUDED_neurongroup_stateupdater_codeobject #define _INCLUDED_neurongroup_stateupdater_codeobject #include "objects.h" void _run_neurongroup_stateupdater_codeobject(); #endif 2016-05-24 13:47:46,356 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_initialise_queue.cpp: #include "objects.h" #include "code_objects/synapses_pre_initialise_queue.h" void _run_synapses_pre_initialise_queue() { using namespace brian; double* _ptr_array_defaultclock_dt = _array_defaultclock_dt; double* real_delays = synapses_pre.delay.empty() ? 0 : &(synapses_pre.delay[0]); int32_t* sources = synapses_pre.sources.empty() ? 0 : &(synapses_pre.sources[0]); const unsigned int n_delays = synapses_pre.delay.size(); const unsigned int n_synapses = synapses_pre.sources.size(); synapses_pre.prepare(1000, 1, real_delays, n_delays, sources, n_synapses, _ptr_array_defaultclock_dt[0]); } 2016-05-24 13:47:46,356 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_pre_initialise_queue.h: #ifndef _INCLUDED_synapses_pre_initialise_queue #define _INCLUDED_synapses_pre_initialise_queue void _run_synapses_pre_initialise_queue(); #endif 2016-05-24 13:47:46,357 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_group_variable_set_conditional_codeobject.cpp: #include "objects.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject.h" #include "brianlib/common_math.h" #include "brianlib/stdint_compat.h" #include #include #include ////// SUPPORT CODE /////// namespace { inline double _rand(int vectorisation_idx) { return (double)rand()/RAND_MAX; } inline unsigned char _brian_mod(unsigned char ux, unsigned char uy) { const unsigned char x = (unsigned char)ux; const unsigned char y = (unsigned char)uy; return ((x%y)+y)%y; } inline char _brian_mod(unsigned char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline char _brian_mod(char ux, unsigned char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline char _brian_mod(char ux, char uy) { const char x = (char)ux; const char y = (char)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(char ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(char ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(char ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(char ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(char ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(char ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(char ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(char ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(char ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(char ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(char ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned short _brian_mod(unsigned short ux, unsigned char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, char uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline unsigned short _brian_mod(unsigned short ux, unsigned short uy) { const unsigned short x = (unsigned short)ux; const unsigned short y = (unsigned short)uy; return ((x%y)+y)%y; } inline short _brian_mod(unsigned short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline short _brian_mod(short ux, unsigned char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, char uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, unsigned short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline short _brian_mod(short ux, short uy) { const short x = (short)ux; const short y = (short)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(short ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(short ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(short ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(short ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(short ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(short ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(short ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(short ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(short ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned int _brian_mod(unsigned int ux, unsigned char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, char uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, short uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline unsigned int _brian_mod(unsigned int ux, unsigned int uy) { const unsigned int x = (unsigned int)ux; const unsigned int y = (unsigned int)uy; return ((x%y)+y)%y; } inline int _brian_mod(unsigned int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline int _brian_mod(int ux, unsigned char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, char uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, short uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, unsigned int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline int _brian_mod(int ux, int uy) { const int x = (int)ux; const int y = (int)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(int ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(int ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(int ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(int ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(int ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(int ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(int ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long _brian_mod(unsigned long ux, unsigned char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, char uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, short uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, int uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline unsigned long _brian_mod(unsigned long ux, unsigned long uy) { const unsigned long x = (unsigned long)ux; const unsigned long y = (unsigned long)uy; return ((x%y)+y)%y; } inline long _brian_mod(unsigned long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long _brian_mod(long ux, unsigned char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, char uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, short uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, int uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, unsigned long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline long _brian_mod(long ux, long uy) { const long x = (long)ux; const long y = (long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline unsigned long long _brian_mod(unsigned long long ux, unsigned char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, char uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, short uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, int uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline unsigned long long _brian_mod(unsigned long long ux, unsigned long long uy) { const unsigned long long x = (unsigned long long)ux; const unsigned long long y = (unsigned long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(unsigned long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(unsigned long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(unsigned long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(unsigned long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long long _brian_mod(long long ux, unsigned char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, char uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, short uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, int uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, unsigned long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline long long _brian_mod(long long ux, long long uy) { const long long x = (long long)ux; const long long y = (long long)uy; return ((x%y)+y)%y; } inline float _brian_mod(long long ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(long long ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long long ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, char uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, short uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, int uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, unsigned long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, long long uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline float _brian_mod(float ux, float uy) { const float x = (float)ux; const float y = (float)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(float ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(float ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, char uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, short uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, int uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, unsigned long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, long long uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, float uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline double _brian_mod(double ux, double uy) { const double x = (double)ux; const double y = (double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, char uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, short uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, int uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, unsigned long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long long uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, float uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } inline long double _brian_mod(long double ux, long double uy) { const long double x = (long double)ux; const long double y = (long double)uy; return fmod(fmod(x, y)+y, y); } #ifdef _MSC_VER #define _brian_pow(x, y) (pow((double)(x), (y))) #else #define _brian_pow(x, y) (pow((x), (y))) #endif } ////// HASH DEFINES /////// void _run_synapses_group_variable_set_conditional_codeobject() { using namespace brian; ///// CONSTANTS /////////// double* const _array_synapses_w = _dynamic_array_synapses_w.empty()? 0 : &_dynamic_array_synapses_w[0]; const int _numw = _dynamic_array_synapses_w.size(); const int _numN = 1; ///// POINTERS //////////// double* __restrict _ptr_array_synapses_w = _array_synapses_w; int32_t* _ptr_array_synapses_N = _array_synapses_N; //// MAIN CODE //////////// // scalar code const int _vectorisation_idx = -1; const int _N = _array_synapses_N[0]; for(int _idx=0; _idx<_N; _idx++) { // vector code const int _vectorisation_idx = _idx; const bool _cond = true; if (_cond) { double w; w = 0.01 * _rand(_vectorisation_idx); _ptr_array_synapses_w[_idx] = w; } } } 2016-05-24 13:47:46,357 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file code_objects/synapses_group_variable_set_conditional_codeobject.h: #ifndef _INCLUDED_synapses_group_variable_set_conditional_codeobject #define _INCLUDED_synapses_group_variable_set_conditional_codeobject #include "objects.h" void _run_synapses_group_variable_set_conditional_codeobject(); #endif 2016-05-24 13:47:46,366 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file network.*: cpp_file: #include "network.h" #include #include #include #include #define Clock_epsilon 1e-14 double Network::_last_run_time = 0.0; double Network::_last_run_completed_fraction = 0.0; Network::Network() { t = 0.0; } void Network::clear() { objects.clear(); } void Network::add(Clock* clock, codeobj_func func) { #if defined(_MSC_VER) && (_MSC_VER>=1700) objects.push_back(std::make_pair(std::move(clock), std::move(func))); #else objects.push_back(std::make_pair(clock, func)); #endif } void Network::run(const double duration, void (*report_func)(const double, const double, const double, const double), const double report_period) { std::clock_t start, current; const double t_start = t; const double t_end = t + duration; double next_report_time = report_period; // compute the set of clocks compute_clocks(); // set interval for all clocks for(std::set::iterator i=clocks.begin(); i!=clocks.end(); i++) (*i)->set_interval(t, t_end); start = std::clock(); if (report_func) { report_func(0.0, 0.0, t_start, duration); } Clock* clock = next_clocks(); double elapsed_realtime; bool did_break_early = false; while(clock && clock->running()) { t = clock->t[0]; for(int i=0; i next_report_time) { report_func(elapsed, (clock->t[0]-t_start)/duration, t_start, duration); next_report_time += report_period; } } Clock *obj_clock = objects[i].first; // Only execute the object if it uses the right clock for this step if (curclocks.find(obj_clock) != curclocks.end()) { codeobj_func func = objects[i].second; if (func) // code objects can be NULL in cases where we store just the clock func(); } } for(std::set::iterator i=curclocks.begin(); i!=curclocks.end(); i++) (*i)->tick(); clock = next_clocks(); current = std::clock(); elapsed_realtime = (double)(current - start)/(1 * CLOCKS_PER_SEC); } if(!did_break_early) t = t_end; _last_run_time = elapsed_realtime; if(duration>0) { _last_run_completed_fraction = (t-t_start)/duration; } else { _last_run_completed_fraction = 1.0; } if (report_func) { report_func(elapsed_realtime, 1.0, t_start, duration); } } void Network::compute_clocks() { clocks.clear(); for(int i=0; i::iterator i=clocks.begin(); i!=clocks.end(); i++) { Clock *clock = *i; if(clock->t[0]t[0]) minclock = clock; } // find set of equal clocks curclocks.clear(); double t = minclock->t[0]; for(std::set::iterator i=clocks.begin(); i!=clocks.end(); i++) { Clock *clock = *i; double s = clock->t[0]; if(s==t || fabs(s-t)<=Clock_epsilon) curclocks.insert(clock); } return minclock; } h_file: #ifndef _BRIAN_NETWORK_H #define _BRIAN_NETWORK_H #include #include #include #include "brianlib/clocks.h" typedef void (*codeobj_func)(); class Network { std::set clocks, curclocks; void compute_clocks(); Clock* next_clocks(); public: std::vector< std::pair< Clock*, codeobj_func > > objects; double t; static double _last_run_time; static double _last_run_completed_fraction; Network(); void clear(); void add(Clock *clock, codeobj_func func); void run(const double duration, void (*report_func)(const double, const double, const double, const double), const double report_period); }; #endif 2016-05-24 13:47:46,366 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file network.cpp: #include "network.h" #include #include #include #include #define Clock_epsilon 1e-14 double Network::_last_run_time = 0.0; double Network::_last_run_completed_fraction = 0.0; Network::Network() { t = 0.0; } void Network::clear() { objects.clear(); } void Network::add(Clock* clock, codeobj_func func) { #if defined(_MSC_VER) && (_MSC_VER>=1700) objects.push_back(std::make_pair(std::move(clock), std::move(func))); #else objects.push_back(std::make_pair(clock, func)); #endif } void Network::run(const double duration, void (*report_func)(const double, const double, const double, const double), const double report_period) { std::clock_t start, current; const double t_start = t; const double t_end = t + duration; double next_report_time = report_period; // compute the set of clocks compute_clocks(); // set interval for all clocks for(std::set::iterator i=clocks.begin(); i!=clocks.end(); i++) (*i)->set_interval(t, t_end); start = std::clock(); if (report_func) { report_func(0.0, 0.0, t_start, duration); } Clock* clock = next_clocks(); double elapsed_realtime; bool did_break_early = false; while(clock && clock->running()) { t = clock->t[0]; for(int i=0; i next_report_time) { report_func(elapsed, (clock->t[0]-t_start)/duration, t_start, duration); next_report_time += report_period; } } Clock *obj_clock = objects[i].first; // Only execute the object if it uses the right clock for this step if (curclocks.find(obj_clock) != curclocks.end()) { codeobj_func func = objects[i].second; if (func) // code objects can be NULL in cases where we store just the clock func(); } } for(std::set::iterator i=curclocks.begin(); i!=curclocks.end(); i++) (*i)->tick(); clock = next_clocks(); current = std::clock(); elapsed_realtime = (double)(current - start)/(1 * CLOCKS_PER_SEC); } if(!did_break_early) t = t_end; _last_run_time = elapsed_realtime; if(duration>0) { _last_run_completed_fraction = (t-t_start)/duration; } else { _last_run_completed_fraction = 1.0; } if (report_func) { report_func(elapsed_realtime, 1.0, t_start, duration); } } void Network::compute_clocks() { clocks.clear(); for(int i=0; i::iterator i=clocks.begin(); i!=clocks.end(); i++) { Clock *clock = *i; if(clock->t[0]t[0]) minclock = clock; } // find set of equal clocks curclocks.clear(); double t = minclock->t[0]; for(std::set::iterator i=clocks.begin(); i!=clocks.end(); i++) { Clock *clock = *i; double s = clock->t[0]; if(s==t || fabs(s-t)<=Clock_epsilon) curclocks.insert(clock); } return minclock; } 2016-05-24 13:47:46,366 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file network.h: #ifndef _BRIAN_NETWORK_H #define _BRIAN_NETWORK_H #include #include #include #include "brianlib/clocks.h" typedef void (*codeobj_func)(); class Network { std::set clocks, curclocks; void compute_clocks(); Clock* next_clocks(); public: std::vector< std::pair< Clock*, codeobj_func > > objects; double t; static double _last_run_time; static double _last_run_completed_fraction; Network(); void clear(); void add(Clock *clock, codeobj_func func); void run(const double duration, void (*report_func)(const double, const double, const double, const double), const double report_period); }; #endif 2016-05-24 13:47:46,374 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file synapses_classes.*: cpp_file: h_file: #ifndef _BRIAN_SYNAPSES_H #define _BRIAN_SYNAPSES_H #include #include #include "brianlib/spikequeue.h" template class SynapticPathway; template class SynapticPathway { public: int Nsource, Ntarget, _nb_threads; std::vector &delay; std::vector &sources; std::vector all_peek; std::vector< CSpikeQueue * > queue; SynapticPathway(std::vector& _delay, std::vector &_sources, int _spikes_start, int _spikes_stop) : delay(_delay), sources(_sources) { _nb_threads = 1; for (int _idx=0; _idx < _nb_threads; _idx++) queue.push_back(new CSpikeQueue(_spikes_start, _spikes_stop)); }; ~SynapticPathway() { for (int _idx=0; _idx < _nb_threads; _idx++) delete(queue[_idx]); } void push(int *spikes, unsigned int nspikes) { queue[0]->push(spikes, nspikes); } void advance() { queue[0]->advance(); } vector* peek() { for(int _thread=0; _thread < 1; _thread++) { { if (_thread == 0) all_peek.clear(); all_peek.insert(all_peek.end(), queue[_thread]->peek()->begin(), queue[_thread]->peek()->end()); } } return &all_peek; } void prepare(int n_source, int n_target, scalar *real_delays, unsigned int n_delays, int *sources, unsigned int n_synapses, double _dt) { Nsource = n_source; Ntarget = n_target; { unsigned int length; if (0 == _nb_threads - 1) length = n_synapses - (unsigned int) 0*(n_synapses/_nb_threads); else length = (unsigned int) n_synapses/_nb_threads; unsigned int padding = 0*(n_synapses/_nb_threads); queue[0]->openmp_padding = padding; if (n_delays > 1) queue[0]->prepare(&real_delays[padding], length, &sources[padding], length, _dt); else if (n_delays == 1) queue[0]->prepare(&real_delays[0], 1, &sources[padding], length, _dt); else // no synapses queue[0]->prepare(NULL, 0, &sources[padding], length, _dt); } } }; #endif 2016-05-24 13:47:46,374 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file synapses_classes.cpp: 2016-05-24 13:47:46,375 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file synapses_classes.h: #ifndef _BRIAN_SYNAPSES_H #define _BRIAN_SYNAPSES_H #include #include #include "brianlib/spikequeue.h" template class SynapticPathway; template class SynapticPathway { public: int Nsource, Ntarget, _nb_threads; std::vector &delay; std::vector &sources; std::vector all_peek; std::vector< CSpikeQueue * > queue; SynapticPathway(std::vector& _delay, std::vector &_sources, int _spikes_start, int _spikes_stop) : delay(_delay), sources(_sources) { _nb_threads = 1; for (int _idx=0; _idx < _nb_threads; _idx++) queue.push_back(new CSpikeQueue(_spikes_start, _spikes_stop)); }; ~SynapticPathway() { for (int _idx=0; _idx < _nb_threads; _idx++) delete(queue[_idx]); } void push(int *spikes, unsigned int nspikes) { queue[0]->push(spikes, nspikes); } void advance() { queue[0]->advance(); } vector* peek() { for(int _thread=0; _thread < 1; _thread++) { { if (_thread == 0) all_peek.clear(); all_peek.insert(all_peek.end(), queue[_thread]->peek()->begin(), queue[_thread]->peek()->end()); } } return &all_peek; } void prepare(int n_source, int n_target, scalar *real_delays, unsigned int n_delays, int *sources, unsigned int n_synapses, double _dt) { Nsource = n_source; Ntarget = n_target; { unsigned int length; if (0 == _nb_threads - 1) length = n_synapses - (unsigned int) 0*(n_synapses/_nb_threads); else length = (unsigned int) n_synapses/_nb_threads; unsigned int padding = 0*(n_synapses/_nb_threads); queue[0]->openmp_padding = padding; if (n_delays > 1) queue[0]->prepare(&real_delays[padding], length, &sources[padding], length, _dt); else if (n_delays == 1) queue[0]->prepare(&real_delays[0], 1, &sources[padding], length, _dt); else // no synapses queue[0]->prepare(NULL, 0, &sources[padding], length, _dt); } } }; #endif 2016-05-24 13:47:46,384 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file run.*: cpp_file: #include #include "objects.h" #include #include "code_objects/neurongroup_resetter_codeobject.h" #include "code_objects/neurongroup_stateupdater_codeobject.h" #include "code_objects/neurongroup_thresholder_codeobject.h" #include "code_objects/poissongroup_thresholder_codeobject.h" #include "code_objects/spikemonitor_codeobject.h" #include "code_objects/statemonitor_codeobject.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject_1.h" #include "code_objects/synapses_post_codeobject.h" #include "code_objects/synapses_post_initialise_queue.h" #include "code_objects/synapses_post_push_spikes.h" #include "code_objects/synapses_pre_codeobject.h" #include "code_objects/synapses_pre_initialise_queue.h" #include "code_objects/synapses_pre_push_spikes.h" #include "code_objects/synapses_synapses_create_generator_codeobject.h" void brian_start() { _init_arrays(); _load_arrays(); // Initialize clocks (link timestep and dt to the respective arrays) brian::defaultclock.timestep = brian::_array_defaultclock_timestep; brian::defaultclock.dt = brian::_array_defaultclock_dt; brian::defaultclock.t = brian::_array_defaultclock_t; srand((unsigned int)time(NULL)); rand(); // put this in because the first random number generated on some versions of C++ is always almost the same } void brian_end() { _write_arrays(); _dealloc_arrays(); } h_file: void brian_start(); void brian_end(); 2016-05-24 13:47:46,384 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file run.cpp: #include #include "objects.h" #include #include "code_objects/neurongroup_resetter_codeobject.h" #include "code_objects/neurongroup_stateupdater_codeobject.h" #include "code_objects/neurongroup_thresholder_codeobject.h" #include "code_objects/poissongroup_thresholder_codeobject.h" #include "code_objects/spikemonitor_codeobject.h" #include "code_objects/statemonitor_codeobject.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject.h" #include "code_objects/synapses_group_variable_set_conditional_codeobject_1.h" #include "code_objects/synapses_post_codeobject.h" #include "code_objects/synapses_post_initialise_queue.h" #include "code_objects/synapses_post_push_spikes.h" #include "code_objects/synapses_pre_codeobject.h" #include "code_objects/synapses_pre_initialise_queue.h" #include "code_objects/synapses_pre_push_spikes.h" #include "code_objects/synapses_synapses_create_generator_codeobject.h" void brian_start() { _init_arrays(); _load_arrays(); // Initialize clocks (link timestep and dt to the respective arrays) brian::defaultclock.timestep = brian::_array_defaultclock_timestep; brian::defaultclock.dt = brian::_array_defaultclock_dt; brian::defaultclock.t = brian::_array_defaultclock_t; srand((unsigned int)time(NULL)); rand(); // put this in because the first random number generated on some versions of C++ is always almost the same } void brian_end() { _write_arrays(); _dealloc_arrays(); } 2016-05-24 13:47:46,385 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file run.h: void brian_start(); void brian_end(); 2016-05-24 13:47:46,388 DIAGNOSTIC brian2.devices.cpp_standalone.device: Writing file makefile: PROGRAM = main SRCS = objects.cpp main.cpp code_objects/neurongroup_resetter_codeobject.cpp code_objects/synapses_pre_push_spikes.cpp code_objects/synapses_post_codeobject.cpp code_objects/spikemonitor_codeobject.cpp code_objects/synapses_post_push_spikes.cpp code_objects/synapses_synapses_create_generator_codeobject.cpp code_objects/synapses_post_initialise_queue.cpp code_objects/synapses_pre_codeobject.cpp code_objects/statemonitor_codeobject.cpp code_objects/synapses_group_variable_set_conditional_codeobject_1.cpp code_objects/neurongroup_thresholder_codeobject.cpp code_objects/poissongroup_thresholder_codeobject.cpp code_objects/neurongroup_stateupdater_codeobject.cpp code_objects/synapses_pre_initialise_queue.cpp code_objects/synapses_group_variable_set_conditional_codeobject.cpp network.cpp synapses_classes.cpp run.cpp H_SRCS = objects.h code_objects/neurongroup_resetter_codeobject.h code_objects/synapses_pre_push_spikes.h code_objects/synapses_post_codeobject.h code_objects/spikemonitor_codeobject.h code_objects/synapses_post_push_spikes.h code_objects/synapses_synapses_create_generator_codeobject.h code_objects/synapses_post_initialise_queue.h code_objects/synapses_pre_codeobject.h code_objects/statemonitor_codeobject.h code_objects/synapses_group_variable_set_conditional_codeobject_1.h code_objects/neurongroup_thresholder_codeobject.h code_objects/poissongroup_thresholder_codeobject.h code_objects/neurongroup_stateupdater_codeobject.h code_objects/synapses_pre_initialise_queue.h code_objects/synapses_group_variable_set_conditional_codeobject.h network.h synapses_classes.h run.h brianlib/dynamic_array.h brianlib/common_math.h brianlib/clocks.h OBJS = ${SRCS:.cpp=.o} CC = @g++ DEBUG = -g OPTIMISATIONS = -w -O3 -ffast-math -march=native CFLAGS = -c -Wno-write-strings $(OPTIMISATIONS) -I. LFLAGS = DEPS = make.deps all: executable # Adds debug flags debug: CFLAGS += $(DEBUG) debug: LFLAGS += $(DEBUG) debug: executable .PHONY: all debug executable clean executable: $(OBJS) $(DEPS) $(CC) $(OBJS) -o $(PROGRAM) $(LFLAGS) clean: rm $(OBJS) $(PROGRAM) $(DEPS) make.deps: $(SRCS) $(H_SRCS) $(CC) $(CFLAGS) -MM $(SRCS) > make.deps ifneq ($(wildcard $(DEPS)), ) include $(DEPS) endif %.o : %.cpp $(CC) $(CFLAGS) $< -o $@ 2016-05-24 13:47:55,825 ERROR brian2: Brian 2 encountered an unexpected error. If you think this is bug in Brian 2, please report this issue either to the mailing list at , or to the issue tracker at . Please include this file with debug information in your report: /tmp/brian_debug_2az2_E.log Additionally, you can also include a copy of the script that was run, available at: /tmp/brian_script_YG4viP.py You can also include a copy of the redirected std stream outputs, available at /tmp/tmpmIFyDO and /tmp/tmpGnCcpc Thanks! Traceback (most recent call last): File "STDP_standalone.py", line 44, in run(100*second, report='text') File "/home/augustin/.local/lib/python2.7/site-packages/brian2/units/fundamentalunits.py", line 2381, in new_f result = f(*args, **kwds) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/core/magic.py", line 371, in run namespace=namespace, profile=profile, level=2+level) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/core/magic.py", line 231, in run namespace=namespace, profile=profile, level=level+1) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/core/base.py", line 276, in device_override_decorated_function return getattr(curdev, name)(*args, **kwds) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 1076, in network_run self.build(direct_call=False, **self.build_options) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 958, in build self.compile_source(directory, compiler, debug, clean) File "/home/augustin/.local/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 798, in compile_source raise RuntimeError("Project compilation failed") RuntimeError: Project compilation failed