#include "synapse.h"

Synapse::Synapse(const double w){
    setWeight(w);
}

double Synapse::getWeight() const{
    return weight;
}

void Synapse::setWeight(const double w){
    weight =(double) w;
}

void Synapse::operator=(const double w){
    setWeight(w);
}



Synapse& Synapse::operator =(const Synapse& s){
    if(this!=&s){
        setWeight(s.getWeight());
    }
    return *this;
}

void Synapse::setRandomWeight(){
    //double range = SYNAPSE_WEIGHT_MAX - SYNAPSE_WEIGHT_MIN + 1;
    double range = SYNAPSE_WEIGHT_MAX - SYNAPSE_WEIGHT_MIN;	//lau
    double res;
    do{
       
       //res = (double)(range * rand()/(RAND_MAX + 1.0)) + SYNAPSE_WEIGHT_MIN;
       res=(double)(((rand()/2.0)/(RAND_MAX/2.0))*range)+SYNAPSE_WEIGHT_MIN;
       
    }while(res > SYNAPSE_WEIGHT_MAX && res < SYNAPSE_WEIGHT_MIN);
    setWeight(res);
}

ostream & operator<<(ostream & os,const Synapse & syn){
    os << syn.getWeight();
    return os;
}

istream& operator>>(istream & inp,Synapse & syn){
    double tmp;
    inp >> tmp;
    syn.setWeight(tmp);
    return inp;
}
