Beispiel #1
0
TEST(AgradFwdLog10,Fvar) {
  using stan::math::fvar;
  using std::log;
  using std::isnan;
  using std::log10;

  fvar<double> x(0.5,1.0);
  
  fvar<double> a = log10(x);
  EXPECT_FLOAT_EQ(log10(0.5), a.val_);
  EXPECT_FLOAT_EQ(1 / (0.5 * log(10)), a.d_);

  fvar<double> b = 2 * log10(x) + 4;
  EXPECT_FLOAT_EQ(2 * log10(0.5) + 4, b.val_);
  EXPECT_FLOAT_EQ(2 / (0.5 * log(10)), b.d_);

  fvar<double> c = -log10(x) + 5;
  EXPECT_FLOAT_EQ(-log10(0.5) + 5, c.val_);
  EXPECT_FLOAT_EQ(-1 / (0.5 * log(10)), c.d_);

  fvar<double> d = -3 * log10(x) + 5 * x;
  EXPECT_FLOAT_EQ(-3 * log10(0.5) + 5 * 0.5, d.val_);
  EXPECT_FLOAT_EQ(-3 / (0.5 * log(10)) + 5, d.d_);

  fvar<double> y(-0.5,1.0);
  fvar<double> e = log10(y);
  isnan(e.val_);
  isnan(e.d_);

  fvar<double> z(0.0,1.0);
  fvar<double> f = log10(z);
  isnan(f.val_);
  isnan(f.d_);
}
Beispiel #2
0
TEST(AgradFwdLog10,FvarFvarDouble) {
  using stan::math::fvar;
  using std::log;

  fvar<fvar<double> > x;
  x.val_.val_ = 0.5;
  x.val_.d_ = 1.0;

  fvar<fvar<double> > a = log10(x);

  EXPECT_FLOAT_EQ(log10(0.5), a.val_.val_);
  EXPECT_FLOAT_EQ(1 / (0.5 * log(10)), a.val_.d_);
  EXPECT_FLOAT_EQ(0, a.d_.val_);
  EXPECT_FLOAT_EQ(0, a.d_.d_);

  fvar<fvar<double> > y;
  y.val_.val_ = 0.5;
  y.d_.val_ = 1.0;

  a = log10(y);
  EXPECT_FLOAT_EQ(log10(0.5), a.val_.val_);
  EXPECT_FLOAT_EQ(0, a.val_.d_);
  EXPECT_FLOAT_EQ(1 / (0.5 * log(10)), a.d_.val_);
  EXPECT_FLOAT_EQ(0, a.d_.d_);
}
Beispiel #3
0
void complex_number_examples()
{
    Complex z1{0, 1};
    std::cout << std::setprecision(std::numeric_limits<typename Complex::value_type>::digits10);
    std::cout << std::scientific << std::fixed;
    std::cout << "Print a complex number: " << z1 << std::endl;
    std::cout << "Square it             : " << z1*z1 << std::endl;
    std::cout << "Real part             : " << z1.real() << " = " << real(z1) << std::endl;
    std::cout << "Imaginary part        : " << z1.imag() << " = " << imag(z1) << std::endl;
    using std::abs;
    std::cout << "Absolute value        : " << abs(z1) << std::endl;
    std::cout << "Argument              : " << arg(z1) << std::endl;
    std::cout << "Norm                  : " << norm(z1) << std::endl;
    std::cout << "Complex conjugate     : " << conj(z1) << std::endl;
    std::cout << "Projection onto Riemann sphere: " <<  proj(z1) << std::endl;
    typename Complex::value_type r = 1;
    typename Complex::value_type theta = 0.8;
    using std::polar;
    std::cout << "Polar coordinates (phase = 0)    : " << polar(r) << std::endl;
    std::cout << "Polar coordinates (phase !=0)    : " << polar(r, theta) << std::endl;

    std::cout << "\nElementary special functions:\n";
    using std::exp;
    std::cout << "exp(z1) = " << exp(z1) << std::endl;
    using std::log;
    std::cout << "log(z1) = " << log(z1) << std::endl;
    using std::log10;
    std::cout << "log10(z1) = " << log10(z1) << std::endl;
    using std::pow;
    std::cout << "pow(z1, z1) = " << pow(z1, z1) << std::endl;
    using std::sqrt;
    std::cout << "Take its square root  : " << sqrt(z1) << std::endl;
    using std::sin;
    std::cout << "sin(z1) = " << sin(z1) << std::endl;
    using std::cos;
    std::cout << "cos(z1) = " << cos(z1) << std::endl;
    using std::tan;
    std::cout << "tan(z1) = " << tan(z1) << std::endl;
    using std::asin;
    std::cout << "asin(z1) = " << asin(z1) << std::endl;
    using std::acos;
    std::cout << "acos(z1) = " << acos(z1) << std::endl;
    using std::atan;
    std::cout << "atan(z1) = " << atan(z1) << std::endl;
    using std::sinh;
    std::cout << "sinh(z1) = " << sinh(z1) << std::endl;
    using std::cosh;
    std::cout << "cosh(z1) = " << cosh(z1) << std::endl;
    using std::tanh;
    std::cout << "tanh(z1) = " << tanh(z1) << std::endl;
    using std::asinh;
    std::cout << "asinh(z1) = " << asinh(z1) << std::endl;
    using std::acosh;
    std::cout << "acosh(z1) = " << acosh(z1) << std::endl;
    using std::atanh;
    std::cout << "atanh(z1) = " << atanh(z1) << std::endl;
}
inline
quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>
log10(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q)
{
    using std::log10;

    typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type;

    return quantity_type::from_value(log10(q.value()));
}
Beispiel #5
0
 inline
 fvar<T>
 log10(const fvar<T>& x) {
   using std::log;
   using std::log10;
   using stan::math::NOT_A_NUMBER;
   if (x.val_ < 0.0)
     return fvar<T>(NOT_A_NUMBER, NOT_A_NUMBER);
   else
     return fvar<T>(log10(x.val_), x.d_ / (x.val_ * stan::math::LOG_10));
 }
Beispiel #6
0
int calculate_size(const Eigen::VectorXd& x, 
                   const std::string& name,
                   const int digits,
                   std::ios_base::fmtflags& format) {
  using std::max;
  using std::ceil;
  using std::log10;
  
  double padding = 0;
  if (digits > 0)
    padding = digits + 1;

  double fixed_size = 0.0;
  if (x.maxCoeff() > 0)
    fixed_size = ceil(log10(x.maxCoeff()+0.001)) + padding;
  if (x.minCoeff() < 0)
    fixed_size = max(fixed_size, ceil(log10(-x.minCoeff()+0.01))+(padding+1));
  format = std::ios_base::fixed;
  if (fixed_size < 7) {
    return max(fixed_size,
               max(name.length(), std::string("-0.0").length())+0.0);
  }

  double scientific_size = 0;
  scientific_size += 4.0;   // "-0.0" has four digits
  scientific_size += 1.0;   // e
  double exponent_size = 0;
  if (x.maxCoeff() > 0)
    exponent_size = ceil(log10(log10(x.maxCoeff())));
  if (x.minCoeff() < 0)
    exponent_size = max(exponent_size,
                        ceil(log10(log10(-x.minCoeff()))));
  scientific_size += fmin(exponent_size, 3);
  format = std::ios_base::scientific;
  return scientific_size;
}
Beispiel #7
0
 inline T0
 operator()(const T0& arg1) const {
   return log10(arg1);
 }
BOOL CConvertToSPEXDoc::WriteSpx(CString &spxPath)
{
  // write a spx file

  // for writing 
  short myint16;
  float ftemp;
  int   ntemp;
  CFile SpexFile;

  char buff[1024];
  
  CString cstrT, cstrMsg;
  int nY,nM,nD,nh,nm,ns;

  cstrT = cstrDateTime.Mid(0,2);
  nM = atoi((LPCTSTR)cstrT);
  cstrT = cstrDateTime.Mid(3,2);
  nD = atoi((LPCTSTR)cstrT);
  cstrT = cstrDateTime.Mid(6,4);
  nY = atoi((LPCTSTR)cstrT);

	cstrT = cstrDateTime.Mid(11,2);
	nh = atoi((LPCTSTR)cstrT);
	cstrT = cstrDateTime.Mid(14,2);
	nm = atoi((LPCTSTR)cstrT);
	cstrT = cstrDateTime.Mid(17,2);
	ns = atoi((LPCTSTR)cstrT);

	COleDateTime startTime(nY,nM,nD,nh,nm,ns);


	if(NULL==SpexFile.Open((LPCTSTR)spxPath,CFile::modeCreate|CFile::modeWrite| CFile::typeBinary))
	{
		cstrMsg=_T("Can not create file:\r\n");
		cstrMsg=cstrMsg+spxPath;
		AfxMessageBox((LPCTSTR)cstrMsg);
		return FALSE;
	}

	FillMemory(buff,1024,0);
	SpexFile.Write(buff,444);
	//skip id
	SpexFile.Seek(64,CFile::begin);
	//write comments;
	SpexFile.Write((LPCTSTR)cstrComment,MY_MIN(64,cstrComment.GetLength()));
	//skip fl,dr
	SpexFile.Seek(176,CFile::begin);
	//write operator
	SpexFile.Write((LPCTSTR)cstrUserName,MY_MIN(16,cstrUserName.GetLength()));
	SpexFile.Seek(192,CFile::begin);
	//data length
	myint16=nDA;  
	SpexFile.Write(&myint16,sizeof(WORD));
	//scan num
	myint16=nSN;
	SpexFile.Write(&myint16,sizeof(WORD));
	//CF
	ftemp=(float)dCF;
	SpexFile.Write(&ftemp,sizeof(float));
	//SW
	ftemp=(float)dSW;
	SpexFile.Write(&ftemp,sizeof(float));
	//TM
	ftemp=(float)dTM;
	SpexFile.Write(&ftemp,sizeof(float));
	//FQ  
	ftemp=(float)dFQ;
	SpexFile.Write(&ftemp,sizeof(float));
	//RG
	ftemp=(float)dRG;
	SpexFile.Write(&ftemp,sizeof(float));
	//MA
	ftemp=(float)dMA;
	SpexFile.Write(&ftemp,sizeof(float));
	//MF
	ftemp=(float)dMF;
	SpexFile.Write(&ftemp,sizeof(float));
	//PW
	ftemp=(float)dPW;
	SpexFile.Write(&ftemp,sizeof(float));
	//TC
	ftemp=(float)dTC;
	SpexFile.Write(&ftemp,sizeof(float));
	//PH
	myint16=nPH;
	SpexFile.Write(&myint16,sizeof(WORD));
	//OF
	myint16=nOF;
	SpexFile.Write(&myint16,sizeof(WORD));
	//TE
	ftemp=(float)nTE;
	SpexFile.Write(&ftemp,sizeof(float));


	int np=0;
	COleDateTimeSpan pastTime(0L,0,0, (int)(dTM*np+0.5));
	COleDateTime curTime = startTime + pastTime;

	cstrDateTime.Format(_T("%02d-%02d-%04d %02d:%02d:%02d"),
		curTime.GetMonth(), curTime.GetDay(),
		curTime.GetYear (), curTime.GetHour(),
		curTime.GetMinute(),curTime.GetSecond());

	//DATE
	SpexFile.Write((LPCTSTR)cstrDateTime.Left(10),10);             //DATE
	//TIME
	SpexFile.Seek(6,CFile::current);
	SpexFile.Write((LPCTSTR)cstrDateTime.Right(8),8);             //DATE
	SpexFile.Seek(444,CFile::begin);

	for(int i=np*nDA;i<(np+1)*nDA;i++)
	{
		if(fpdata[i]>0)
			ntemp=(int)(fpdata[i]+0.5);
		else
			ntemp=(int)(fpdata[i]-0.5);
		SpexFile.Write(&ntemp,sizeof(int));
	}

	ntemp=int(MY_MAX(fmax,fabs(fmin))+0.5);
	ntemp=(int)((ceil)(log10((double)ntemp)/log10(2.0)));

	SpexFile.Seek(434,CFile::begin);
	SpexFile.Write(&ntemp,sizeof(int));

	SpexFile.Close();


  return TRUE;
};