Hi Stanislav,
The maximum exponent in the func exp was by mistake set to 70 instead of
700. Fixed in CVS.
Rene Brun
On Sat, 21 Jun 2003, Stanislav Nesterov wrote:
>
> Hi Stilianos,
> Actually this is not true: Double_t and double types on most machines
> are identical. And even e^{-100} doesn't hit Float-type precision.
> There is an artificial limit on exp(x) in TFormula::EvalPar that
> abs(x) can't be greater than 70 (I don't know why).
>
> So, Robert, if you really need such fine precision you have to write:
>
> TF1 f1("f1","expo",0,150);
> f1.SetParameter(0,1);
> f1.SetParameter(1,-1);
> f1.Eval(71);
>
> Best regards,
> Stanislav.
>
>
> On Fri, 20 Jun 2003, Stilianos Kesisoglou wrote:
>
> > Hi Robert,
> >
> > Your TF1 formula evaluates correctly but you hit the machine precision
> > for the
> > specified returned type (Double_t).
> >
> > If you try "f1.Eval(70)" you get a non zero result.
> >
> > Look at the type of the returned value, it's "Double_t" for f1 and
> > "double" for exp(-71)
> >
> > Stelios.
> >
> > ----- Original Message -----
> > From: "Robert Vogel" <robert_vogel@msn.com>
> > To: <Roottalk@pcroot.cern.ch>
> > Sent: Friday, June 20, 2003 2:45 PM
> > Subject: [ROOT] TF1 formula evaluates incorrectly
> >
> >
> > > Running 3.04/02 on Redhat Linux 7.3.
> > >
> > > My TF1 formula does not evaluate correctly, while the explicit formula
> > > using CINT does:
> > >
> > > root [0] TF1 f1("myf1","exp(-x)",0,150)
> > > root [1] f1.Eval(71)
> > > (Double_t)0.00000000000000000e+00
> > > root [2] exp(-71)
> > > (double)1.46248622725123092e-31
> > > root [3]
> > >
> > > Any suggestions?
> > >
> > > Robert Vogel
> > >
> > > _________________________________________________________________
> > > Add photos to your e-mail with MSN 8. Get 2 months FREE*.
> > > http://join.msn.com/?page=features/featuredemail
> > >
> > >
> >
> >
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET