# [Maxima] more three problems...

Raymond Toy toy.raymond at gmail.com
Fri May 4 18:49:47 CDT 2007

```Rainer Joswig wrote:
> In article <463BB1D1.50300 at ericsson.com>,
>  Raymond Toy <raymond.toy at ericsson.com> wrote:
>
>
>> Rainer Joswig wrote:
>>
>>> In article <463BA4D1.60902 at ericsson.com>,
>>>  Raymond Toy <raymond.toy at ericsson.com> wrote:
>>>
>>>
>>>> Rainer Joswig wrote:
>>>>
>>>>> Maxima 5.12.0
>>>>>
>>>>> I got the Lisp part mostly running under LispWorks 5.
>>>>>
>>>>> Three remaining problems from the testsuite:
>>>>>
>>>>>
>>>>> Running tests in rtest9:
>>>>> ********************** Problem 18 ***************
>>>>> Input:
>>>>> errcatch(ev(%, x = 1.0E+20))
>>>>>
>>>>>
>>>>> Result:
>>>>> [7.000000000000015E+19]
>>>>>
>>>>> This differed from the expected result:
>>>>> [7.0E+19]
>>>>>
>>>> Can you evaluate (in Lisp)
>>>>
>>>> (+ (* 1d-20 (expt 1d20 2)) (* -5.5d0 1d20) 5.2d20)?
>>>>
>>>> Does this produce 7d19 or something else?
>>>>
>>> 7.000000000000013E19
>>>
>> Interesting.  I'm guessing LW doesn't read the numbers quite right. Or
>> something.
>>
>
> PPC and Intel on Mac OS X 10.4.9.
>
>
Don't know what else to do except try some experiments to see if each
part is computed correctly.

>>>>>
>>>>>
>>>>>
>>>>> Running tests in rtest_trig:
>>>>>
>>>>> ********************** Problem 60 ***************
>>>>> Input:
>>>>> block([buggy : []], for f in alltrig do for p in pts do block([e,
>>>>> fop : op(f)], e : buildq([p, fop], lambda([],
>>>>> cabs(float(rectform(fop(p))) - fop(float(p))))),
>>>>> if e() > 1.0E-13 then buggy : cons(e, buggy)), buggy)
>>>>>
>>>>>
>>>>> Result:
>>>>> The number 1.0*%i+2.0 isn't in the domain of acot
>>>>>  -- an error.  To debug this try debugmode(true);
>>>>> 0
>>>>>
>>>> In maxima, try acot(2.0+%i*1.0);  If that produces an error, try
>>>> atan(1/(2.0+%i*1.0)).  If that doesn't work, use Lisp and evaluate (atan
>>>> (/ #c(2d0 1d0))).
>>>>
>>> (%i3) acot(2.0+%i*1.0);
>>> The number 1.0*%i+2.0 isn't in the domain of acot
>>>  -- an error.  To debug this try debugmode(true);
>>>
>>> (%i4) atan(1/(2.0+%i*1.0));
>>>                                1
>>> (%o4)                atan(------------)
>>>                           1.0 %i + 2.0
>>>
>>>
>> Oops.  Try float(atan(1/(2.0+1.0*%i))).
>>
>> Ray
>>
>
> (%i5) float(atan(1/(2.0+1.0*%i)));
>
>                                1
> (%o5)                atan(------------)
>                           1.0 %i + 2.0
>
>
Hmm.  I confess that I didn't try it, but float(%o5), %o5, numer, etc.,
doesn't do anything.  That seems like a bug.

Try float(atan(2/5-%i/5)).

The reason I'm asking is that acot(x) is evaluated via atan(1/x).  If
atan(1/x) returns nil, a domain error is signaled.

Ray

```