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