00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef FASTNEURON_H
00019 #define FASTNEURON_H
00020
00021 #include <amygdala/neuron.h>
00022
00035 class FastNeuron : public Neuron {
00036 public:
00039 FastNeuron(AmIdInt neuronId);
00040 virtual ~FastNeuron();
00041
00050 virtual float* InitializeLookupTable(int index);
00051
00060 virtual float* GetTableParams(int index, int& numParams);
00061
00063 virtual const char* ClassId() { return "FastNeuron"; }
00064
00065 protected:
00066
00067
00080 virtual void InputSpike(SynapseItr& inSynapse,
00081 AmTimeInt inTime,
00082 unsigned int numSyn = 0);
00083
00090 virtual int SetLookupTables(FunctionLookup* funcRef);
00091
00097 virtual int FillLookupTables(int index);
00098
00107 virtual void SetMaxScaledWeight();
00108
00109 private:
00116 inline void PspKernel(float calcTime, float* pspElement);
00117
00118
00119
00120
00121
00122
00123 float* pspLookup;
00124
00125
00126
00127
00128
00129 unsigned int histBgnIdx;
00130
00131
00132
00133
00134
00135 float stepSizeInv;
00136 };
00137
00138 #endif