/* * AttractorKernel.cpp * AwesomeAttractor * * Created by Joshua Moerman on 07-08-10. * Copyright 2010 Rodo. All rights reserved. * */ #include "AttractorKernel.hpp" #include #include #pragma mark - #pragma mark memory AttractorKernel::AttractorKernel(const unsigned int dimension, const unsigned int numberOfParameters) : numberOfParameters(numberOfParameters), dimension(dimension){ try { allocate(); } catch (std::exception& e) { std::cout << "Couldn't construct AttractorKernel: " << e.what() << std::endl; dealloc(); } std::fill_n(parameters, numberOfParameters, 0.0); std::fill_n(vectorNew, dimension, 0.0); std::fill_n(vectorOld, dimension, 0.0); } AttractorKernel::~AttractorKernel(){ dealloc(); } void AttractorKernel::allocate(){ parameters = new double[numberOfParameters]; vectorNew = new double[dimension]; vectorOld = new double[dimension]; } void AttractorKernel::dealloc(){ delete[] vectorOld; vectorOld = NULL; delete[] vectorNew; vectorNew = NULL; delete[] parameters; parameters = NULL; } #pragma mark - #pragma mark parameters // NOTE: inlining these functions (with the keyword inline) improves performance by at most 1% (tested) double & AttractorKernel::operator[](const unsigned int index){ return parameters[index]; } double const & AttractorKernel::operator[](const unsigned int index) const{ return parameters[index]; } unsigned int AttractorKernel::getNumberOfParameters() const{ return numberOfParameters; } #pragma mark - #pragma mark vector double const * AttractorKernel::vector() const{ return vectorNew; } double const * AttractorKernel::previousVector() const{ return vectorOld; } unsigned int AttractorKernel::getDimension() const{ return dimension; }