// Copyright John Maddock 2007.
// Copyright Paul A. Bristow 2007, 2009.

// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)

// boost_math.cpp  This is the main DLL file.

//#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error
//#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
// These are now defined in project properties
// to avoid complications with pre-compiled headers:
// "BOOST_MATH_ASSERT_UNDEFINED_POLICY=0"
// "BOOST_MATH_OVERFLOW_ERROR_POLICY="errno_on_error""
// so command line shows:
// /D "BOOST_MATH_ASSERT_UNDEFINED_POLICY=0"
// /D "BOOST_MATH_OVERFLOW_ERROR_POLICY="errno_on_error"" 

#include "stdafx.h"

#pragma warning(disable: 4400) // 'const boost_math::any_distribution ^' : const/volatile qualifiers on this type are not supported

#include "boost_math.h"

namespace boost_math
{

any_distribution::any_distribution(int t, double arg1, double arg2, double arg3)
{
   TRANSLATE_EXCEPTIONS_BEGIN
   // This is where all the work gets done:
   switch(t) // index of distribution to distribution_info distributions[]
   {  // New entires must match distribution names, parameter name(s) and defaults defined below.
   case 0:
      this->reset(new concrete_distribution<boost::math::bernoulli>(boost::math::bernoulli(arg1)));
      break;
   case 1:
      this->reset(new concrete_distribution<boost::math::beta_distribution<> >(boost::math::beta_distribution<>(arg1, arg2)));
      break; // Note - no typedef, so need explicit type <> but rely on default = double.
   case 2:
      this->reset(new concrete_distribution<boost::math::binomial_distribution<> >(boost::math::binomial_distribution<>(arg1, arg2)));
      break; // Note - no typedef, so need explicit type <> but rely on default = double.
   case 3:
      this->reset(new concrete_distribution<boost::math::cauchy>(boost::math::cauchy(arg1, arg2)));
      break;
   case 4:
      this->reset(new concrete_distribution<boost::math::chi_squared>(boost::math::chi_squared(arg1)));
      break;
   case 5:
      this->reset(new concrete_distribution<boost::math::exponential>(boost::math::exponential(arg1)));
      break;
   case 6:
      this->reset(new concrete_distribution<boost::math::extreme_value>(boost::math::extreme_value(arg1)));
      break;
   case 7:
      this->reset(new concrete_distribution<boost::math::fisher_f >(boost::math::fisher_f(arg1, arg2)));
      break;
   case 8:
      this->reset(new concrete_distribution<boost::math::gamma_distribution<> >(boost::math::gamma_distribution<>(arg1, arg2)));
      break;
   case 9:
      this->reset(new concrete_distribution<boost::math::laplace_distribution<> >(boost::math::laplace_distribution<>(arg1, arg2)));
      break;
   case 10:
      this->reset(new concrete_distribution<boost::math::lognormal_distribution<> >(boost::math::lognormal_distribution<>(arg1, arg2)));
      break;
   case 11:
      this->reset(new concrete_distribution<boost::math::negative_binomial_distribution<> >(boost::math::negative_binomial_distribution<>(arg1, arg2)));
      break; 
   case 12:
      this->reset(new concrete_distribution<boost::math::normal_distribution<> >(boost::math::normal_distribution<>(arg1, arg2)));
      break;
   case 13:
      this->reset(new concrete_distribution<boost::math::pareto>(boost::math::pareto(arg1, arg2)));
      break;
   case 14:
      this->reset(new concrete_distribution<boost::math::poisson>(boost::math::poisson(arg1)));
      break;
   case 15:
      this->reset(new concrete_distribution<boost::math::rayleigh>(boost::math::rayleigh(arg1)));
      break;
   case 16:
      this->reset(new concrete_distribution<boost::math::students_t>(boost::math::students_t(arg1)));
      break;
   case 17:
      this->reset(new concrete_distribution<boost::math::triangular>(boost::math::triangular(arg1, arg2, arg3)));
      break;
   case 18:
      this->reset(new concrete_distribution<boost::math::uniform>(boost::math::uniform(arg1, arg2)));
      break;
   case 19:
      this->reset(new concrete_distribution<boost::math::weibull>(boost::math::weibull(arg1, arg2)));
      break;

   default:
      // TODO:
      // Need some proper error handling here:
      assert(0);
   }
   TRANSLATE_EXCEPTIONS_END
} // any_distribution constructor.

struct distribution_info
{
   const char* name; // of distribution.
   const char* first_param; // parameters name like "degrees of freedom"
   const char* second_param; // if required, else "".
   const char* third_param; // if required, else "".
   // triangular need 3 parameters.
   // (Only the Bi-Weibull would need 5 parameters?)
   double first_default; // distribution parameter value, often 0, 0.5 or 1.
   double second_default; // 0 if there isn't a second argument.
   // Note that defaults below follow default argument in constructors,
   // if any, but need not be the same.
   double third_default; // 0 if there isn't a third argument.
};

distribution_info distributions[] = 
{ // distribution name, parameter name(s) and default(s) 
  // Order must match any_distribution constructor above!
  // Null string "" and zero default for un-used arguments.
   { "Bernoulli", "Probability", "", "",0.5, 0, 0}, // case 0
   { "Beta", "Alpha", "Beta", "", 1, 1, 0}, // case 1
   { "Binomial", "Trials", "Probability of success", "", 1, 0.5, 0}, // case 2
   { "Cauchy", "Location", "Scale", "", 0, 1, 0}, // case 3
   { "Chi_squared", "Degrees of freedom", "", "", 1, 0, 0}, // case 4
   { "Exponential", "lambda", "", "", 1, 0, 0}, // case 5
   { "Extreme value", "Location", "Scale", "", 0, 1, 0}, // case 6
   { "Fisher-F", "Degrees of freedom 1", "Degrees of freedom 2", "", 1, 1, 0}, // case 7
   { "Gamma", "Shape", "Scale", "", 1, 1, }, // case 8
   { "Laplace", "Location", "Scale", "", 0, 1, 0}, // case 9
   { "Lognormal", "Location", "Scale", "", 0, 1, 0}, // case 10
   { "Negative Binomial", "Successes", "Probability of success", "", 1, 0.5, 0}, // case 11
   { "Normal (Gaussian)", "Mean", "Standard Deviation", "", 0, 1, 0}, // case 12
   { "Pareto", "Location", "Shape","", 1, 1, 0}, // case 13
   { "Poisson", "Mean", "", "", 1, 0, 0}, // case 14
   { "Rayleigh", "Sigma", "", "", 1, 0, 0}, // case 15
   { "Student's t", "Degrees of Freedom", "", "", 1, 0, 0}, // case 16
   { "Triangular", "Lower", "Mode", "Upper", -1, 0, +1 }, // case 17 3rd parameter!
   // 0, 0.5, 1 also said to be 'standard' but this is most like an approximation to Gaussian distribution.
   { "Uniform", "Lower", "Upper", "", 0, 1, 0}, // case 18
   { "Weibull", "Shape", "Scale", "", 1, 1, 0}, // case 19
};

// How many distributions are supported:
int any_distribution::size()
{
   return sizeof(distributions) / sizeof(distributions[0]);
}

// Display name of i'th distribution:
System::String^ any_distribution::distribution_name(int i)
{
   if(i >= size())
      return "";
   return gcnew System::String(distributions[i].name);
}
// Name of first distribution parameter, or null if not supported:
System::String^ any_distribution::first_param_name(int i)
{
   if(i >= size())
      return "";
   return gcnew System::String(distributions[i].first_param);
}
// Name of second distribution parameter, or null if not supported:
System::String^ any_distribution::second_param_name(int i)
{
   if(i >= size())
      return "";
   return gcnew System::String(distributions[i].second_param);
}
// Name of third distribution parameter, or null if not supported:
System::String^ any_distribution::third_param_name(int i)
{
   if(i >= size())
      return "";
   return gcnew System::String(distributions[i].third_param);
}
// default value for first parameter:
double any_distribution::first_param_default(int i)
{
   if(i >= size())
      return 0;
   return distributions[i].first_default;
}
// default value for second parameter:
double any_distribution::second_param_default(int i)
{
   if(i >= size())
      return 0;
   return distributions[i].second_default;
}
// default value for third parameter:
double any_distribution::third_param_default(int i)
{
   if(i >= size())
      return 0;
   return distributions[i].third_default;
}

} // namespace boost_math


