
// SPDX-License-Identifier: CC-BY-NC-SA-4.0
//
// Copyright (C) 2026 Bit by Bit Signal Processing LLC (https://bxbsp.com)
//
// This work is placed under the "Creative Commons Attribution
// NonCommercial ShareAlike 4.0 International" license, known
// by the shortened acronym "CC-BY-NC-SA-4.0".
//
// This work is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// A CC-BY-NC-SA-4.0 license allows you to use this work for
// noncommercial purposes so long as attribution is made to the
// original author.  Modified versions of this work may be distributed,
// but only under the same license.  For further details, see the
// Creative Commons License "CC-BY-NC-SA-4.0".
//
// You should have received a copy of the CC-BY-NC-SA-4.0 license
// along with this work. If not, see
// <https://creativecommons.org/licenses/by-nc-sa/4.0/>.
//

#include "dataset.hh"

dataset::dataset(int num_points)
{
  //printf("Creating dataset with points %d\n", num_points);
  if(num_points<=0)
    abort();

  this->num_points = num_points;
  data = new double[num_points];
  
  for(int i=0; i<num_points; i++)
    data[i] = 0;
}


dataset::~dataset()
{
  delete [] data;
}


void dataset::find_ymin_ymax(double& ymin, double& ymax)
{
  int i = 0;

  while(!isfinite(data[i]) && i<num_points-1)
    i++;
  
  ymin = ymax = data[i];

  for(i++; i<num_points; i++)
    {
      double y = data[i];

      if(isfinite(y))
	{
	  ymin = (y < ymin) ? y : ymin;
	  ymax = (y > ymax) ? y : ymax;
	}
    }  
}
