sinh(1.0d-4)



>>>>> "rgen" == rgen Tischer <J> writes:

    >> But consider this: (C5) sinh(1.0d-4); (D5) 1.0E-4 But sinh(x) =
    >> x + x^3/3! + ..., so the real answer should be closer to (C6)
    >> 1.0d-4 + (1.0d-4^3)/6; (D6) 1.000000001666667E-4

    rgen> Hi Ray, .0001 is a number between .000095 and .00015, so
    rgen> maximas' answer isn't that bad.  If what you wanted was

I find these types of arguments insufficient.  Unless we are doing
interval arithmetic, how do you know what precision my number is?  I
may have 1e-4 plus or minus the least significant bit.  Then the
answer isn't all that good.

I think algorithms should return as accurate an answer as possible
(within reason).  Let me figure out whether the result has any meaning
or not.  

If we have interval arithmetic, then maxima can figure out what the
result is.

    rgen> sinh(1/1000) with standard precision, you can have that:

    rgen> (C1) sinh(1/1000),numer; (D1) 0.00100000016667

Well, except that I wanted 1e-4:

(C6) sinh(1/10000),numer;

(D6) 				    1.0E-4

Which is pretty bad in my book, especially since it's quite easy to
get a better answer.  Especially since maxima decided to implement
sinh itself instead of letting the underlying Lisp evaluate it.  (A
historical artifact, probably.)


Ray