Merge branch 'rtoy-mathjax-for-lapack'
[maxima.git] / tests / rtest_limit.mac
blob25ee48957448f75595dfcba0f863d7c5e9670763
1 /*
2   A collection of tests to stress $limit and friends
3 */
4 (kill(all),0);
5 0$
7 /*
8   Tests to check how limit deals with weird combinations of
9   infinitesimals and infinities. See bug 2563
11 limit(zeroa*inf);
12 und$
13 limit(zerob^zerob);
14 und$
15 limit(zerob^zeroa);
16 und$
18 /* Tests from Bug 1036900 */
19 /* These bugs were fixed in limit.lisp rev 1.7, 2004/10/04 */
20 limit(7^n/8^n,n,inf);
22 limit(7^(n^2)/8^n,n,inf);
23 inf$
24 limit((10^n+9^n+8^n)^(1/n),n,inf);
25 10$
26 limit(4^n/2^(2*n),n,inf);
29 /* Test from Bug 1052308 */
30 /* Fixed in limit.lisp rev 1.11 */
31 assume(equal(zz,0));
32 [equal(zz,0)]$
33 limit(erf(nn*zz), nn, inf);
35 limit(tanh(nn*zz), nn, inf);
37 limit(nn^zz, nn, 0);
40 /* Bug 1281737, fixed in limit.lisp rev 1.15 */
41 limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus);
42 %e*%pi/2;
44 /* Bug 626697 */
45 limit(atan2(y,x),y,minf);
46 -%pi/2;
48 /* Bug 1548643 */
49 limit(abs(sqrt(1-1/x)-1),x,0);
50 inf;
52 /* Bug 671574 */
53 limit(x*atan(x)/(x+1),x,inf);
54 %pi/2;
55 limit(x*atan(x)-log(x),x,inf);
56 inf;
58 /* Bug 1152668 */
59 numer:true;
60 true;
61 limit(sin(x)/x,x,0);
63 limit(sin(x)/x,x,0,plus);
65 limit(sin(x)/x,x,0,minus);
67 numer:false;
68 false;
70 /* #2504 wrong answer for simple limit, limit(sin(x)+1/x, x, inf)=0 */
71 limit(1/x + sin(x), x, inf);
72 ind;
74 /* Bug 593344 */
75 limit(abs(infinity));
76 inf;
78 /* Bug 1469411 */
79 limit(t^2*exp(-4*t/3-8*exp(-t)),t,inf);
83  * From bug 535363, but this isn't really fixed.  The fix for 1469411
84  * broke this test, so we're adding it to make sure we don't break it.
85  *
88 limit(exp(-1/x)/x^4,x,0,'plus);
91 /* Bug 1594330 */
92 limit(x*(atan(x)-%pi/2),x,inf);
93 -1;
95 limit((atan(x)-(%pi/2))/(sin(10/x)),x,inf);
96 -1/10;
98 /* [ 1498047 ] limit(a/n,n,inf); */
99 limit(a/n, n, inf);
103  * [ 1646761 ] limit atanh @ -1 / 1 all wrong...
104  */
105 /* Limit at 1 is (complex) infinity).  But one-sided limit can be inf (real infinity). */
106 limit(atanh(x),x,1);
107 infinity;
108 limit(atanh(x),x,1,'minus);
109 inf;
110 limit(atanh(x),x,-1);
111 infinity;
112 limit(atanh(x),x,-1,'plus);
113 minf;
115 /* There shouldn't be an error message printed out here.  Need to look at output to see. */
116 limit(2*atanh(x),x,1);
117 infinity;
118 limit(2*atanh(x),x,1,'minus);
119 inf;
121 limit(atanh(a-1)-log(a)/2,a,0,'plus),logarc:true;
122 -log(2)/2;
124 /* [ 1606731 ] limit of algebraic when algebraic : true */
125 limit(x*(sqrt(1+x^2)-x),x,inf), algebraic : true, gcd : subres;
126 1/2;
128 /* [ 1097982 ] limit(x/(x^(log(x)))); returns wrong answer */
129 limit(x/(x^log(x)), x, inf);
132 /* [ 1039965 ] limit(4^n/2^(2*n),n,inf) is wrong */
133 limit(4^n/2^(2*n),n,inf);
136 /* [ 1731127 ] limit((1 + 1/x)*(sqrt(x + 1) + 1), x, inf) => 0 (not inf) */
137 limit((1 + 1/x)*(sqrt(x + 1) + 1), x, inf);
138 inf;
140 /* [ 1593083 ] tlimit(t^2*exp(-4*t/3-8*exp(-t)),t,inf) gives error */
141 tlimit(t^2*exp(-4*t/3-8*exp(-t)),t,inf);
144 /* [ 1786774 ] tlimit((5^x + 3^x)^(1/x), x, inf) => Error */
145 tlimit((5^x + 3^x)^(1/x), x, inf);
148 /* [ 1603900 ] taylor/tlimit (4^n+1)/2^(2*n) internal error */
149 tlimit((4^n+1)/2^(2*n),n,inf);
152 /* [ 1281736 ] limit((x/log(x))*(x^(1/x)-1),x,inf) - wrong result */
153 limit((x/log(x))*(x^(1/x)-1),x,inf);
156 /* [ 1036901 ] tlimit(7^(n^2)/8^n,n,inf); wrong result */
157 tlimit(7^(n^2)/8^n, n, inf);
158 inf;
160 /* [ 1665657 ] limit fails to find easy limit */
161 limit(x/(x-1)-1/log(x),x,1,plus);
162 1/2;
164 /* [ 611411 ] limit asks sign of IND */
165 limit(abs(sin(x)),x,inf);
166 ind;
168 /* [ 1629723 ] bug in limit, asks sign of IND, encountered in integrator */
169 limit(abs(sin(x))/x, x, inf);
172 /* [ 782099 ] limit returns expression in IND */
173 limit(sinh(exp(%i*x)),x,inf);
174 ind;
176 /* #3866 limit(log(sinh(x)),x,0,'plus) --> infinity */
177 limit(log(sinh(x)),x,0,'plus);
178 minf;
180 /* [ 1528607 ] limit(a^x,x,inf) can't solve for a : abs(a) < 1 */
181 limit((-2/3)^x,x,inf);
184 limit(signum(x), x, 0, plus);
187 limit(signum(x), x, 0, minus);
190 limit((-1/%pi)^x,x,inf);
193 tlimit(exp(%i*t), t, inf);
194 ind;
196 tlimit(exp(-t+%i*t),t,inf);
199 /* [ 1811503 ] computing a wrong result */
200 limit((((1+1/x)^(x^2))+1)^(1/x),x,inf);
203 /* [ 1760232 ] limit(1/n * n!^(1/n), n, inf); */
204 limit(1/n * n!^(1/n), n, inf);
205 %e^-1;
207 /* #3681 limit(n^n/(n^n+(n-1)^n),n,inf) wrong */
208 limit(n^n/(n^n+(n-1)^n), n, inf);
209 %e/(%e+1);
211 /* #3682 limit(n^(n-1)/(n^n+(n-1)^n),n,inf) gives Lisp error */
212 limit(n^(n-1)/(n^n+(n-1)^n),n,inf);
215 /* Apparently wrong limit with factorial - ID: 3198530 */
216 limit(1/(2+1/factorial(n)),n,inf);
217 1/2;
219 limit(t*(erf((t))-1),t,inf);
222 /* #3153 Limits of erfc */
223 limit(erfc(x*(1 + %i)), x, inf);
226 limit(erfc(x*(1 + %i)), x, minf);
229 limit(exp(x)*(sin(1/x+exp(-x))-sin(1/x+exp(-x^2))), x, inf);
232 /* it would be nice to handle this someday
233   limit(n - exp(psi[0](n)), n, inf);
234   1/2;
237 limit(x*gamma(x), x, 0);
240 /* [ 744679 ] limit overflows memory? */
241 (assume(a>1), limit((a^(1/n)+1)^n/2^n, n, inf));
242 'sqrt(a);
244 /* [ 702512 ] limit(1/(1/a*2^(%i*a)+1),a,inf) =&gt; UND */
245 limit(1/(1/a*2^(%i*a)+1),a,inf);
248 /* [ 923407 ] limit(atan(sqrt(x))/sqrt(x),x,0) wrong */
249 limit(atan(sqrt(x))/sqrt(x),x,0);
252 /* [ 1102908 ] limit/atan/exp returns complex expr with wrong principal val */
253 limit(atan(x)/(1/exp(1)-exp(-(1+x)^2)),x,inf,plus);
254 %e*%pi/2;
256 limit( (3^(1/x) + 5^(1/x))^x, x, 0, minus);
259 limit( (3^(1/x) + 5^(1/x))^x, x, 0, plus);
262 limit( (3^(1/x) + 5^(1/x))^x, x, 0);
263 ind;
265 /* [ 1852415 ] limit(sqrt(1-%e^(-x^2)), x, inf) = 0 */
266 limit(sqrt(1-%e^(-x^2)), x, inf);
269 /* [ 1515712 ] tlimit (x*atan(x)/(x+1),x,inf) => 3 %pi/2, etc */
270 tlimit(x*atan(x)/(x+1),x,inf);
271 %pi/2;
273 tlimit(x*(atan(x)-%pi/2),x,inf);
276 tlimit(atan(x^-1), x, 0, minus);
277 -%pi/2;
279 /* [ 1973399 ] F(x) := 1/%pi*(atan(x) + %pi/2) */
280 (assume(c>0), limit(((1/%pi)*(atan(n/%pi) + %pi/2))^n, n, inf));
281 %e^(-1);
283 /* [ 1103515 ] limit(atan2(x,-1),x,0) wrong */
284 limit(atan2(x,-1), x, 0, minus);
285 -%pi;
287 limit(atan2(x,-1), x, 0, plus);
288 %pi;
290 limit(atan2(x,-1), x, 0);
291 ind;
293 /* limit of atan2 - ID: 3539699 */
294 limit(atan2(x^2-2,x^3-3*x), x, sqrt(2), minus);
295 -%pi;
297 limit(atan2(x^2-2,x^3-3*x), x, sqrt(2), plus);
298 %pi;
300 limit(atan2((x^2-2), x^3-2*x), x, sqrt(2), minus);
301 atan(1/sqrt(2))-%pi;
303 limit(atan2((x^2-2), x^3-2*x), x, sqrt(2), plus);
304 atan(1/sqrt(2));
306 limit(atan2(-(x^2-2), x^3-2*x), x, sqrt(2), minus);
307 %pi-atan(1/sqrt(2));
309 limit(atan2(-(x^2-2), x^3-2*x), x, sqrt(2), plus);
310 -atan(1/sqrt(2));
312 /* #3864 limit of atan2 expression */
313 limit(atan2(0,1-3^x),x,0);
314 ind;
316 limit(floor(x), x, 5, minus);
319 limit(floor(x), x, 5, plus);
322 limit(ceiling(x), x, 5, minus);
325 limit(ceiling(x), x, 5, plus);
328 limit(round(x), x, 5/2, minus);
331 limit(round(x), x, 5/2, plus);
334 limit(floor(sin(x)), x, 0, minus);
337 /* #3616 limit with floor problems */
338 limit(floor(atan(x)),x,1);
341 limit(ceiling(cos(x)),x,0);
344 limit(floor(cos(x)),x,0);
347 limit(ceiling(cos(x)^2),x,0);
350 /* [ 2914296 ] Limit gets Maxima stuck */
351 /* caused blow-up in behavior-by-diff with loop up to 5th derivative */
352 limit( (log(1+x^2)-2+2*cos(x))/((sin(x))^2+2*sqrt(1-x^2)-2),x,0);
353 5/7;
355 /* [ 1587235 ] limit(floor(x),x,1) wrong */
356 limit(floor(x),x,0);
357 ind;
359 /* [ 1885377 ] wrong limit evaluation in 5.14.0 */
360 limit((3/4)^(5*n+1), n, inf);
363 limit(-%e^x/x, x, inf);
364 minf;
366 /* [ 2083561 ] Limit of the Wallis product */
367 limit((%pi*4^N*N!^2)/(2*2^(2*N)*gamma(N+1/2)*gamma(N+3/2)), N, inf);
368 %pi/2$
370 /* wrong limit(log(gamma(x+1))/x,x,0) - ID: 2727078 */
371 limit(log(gamma(x+1))/x, x, 0);
372 -%gamma;
374 /* log has a branch cut on negative real axis */
375 limit(log(-1+x*%i), x, 0, plus);
376 %i*%pi;
378 limit(log(-1+x*%i), x, 0, minus);
379 -%i*%pi;
381 limit((log(y+h)-log(y))/h,h,0,plus);
382 1/y;
384 /* Bug 3587 */
385 limit(log(3-sqrt(x)),x,9,minus);
386 minf;
388 /* Bug 3589 */
389 limit((sqrt(x)-2)*log(1-sqrt(x)/2),x,4,minus);
392 /* Bug 3831 */
393 limit(log((sqrt(x^2+1))/2),x,1);
394 -log(2)/2;
396 /* limit of incomplete gamma */
397 /* function simplim%gamma_incomplete in gamma.lisp */
399 /* sin(x^2)/(x^2) improper integral incorrect? - ID: 3397562 */
400 limit( gamma_incomplete(-1/2, -%i*x^2), x, inf);
403 /* should be complex infinity, but the bug limit(x*exp(%i*x),x,inf) = und
404 prevents a correct value*/
405 limit( gamma_incomplete(2, -%i*x), x, inf);
406 infinity$
408 /* Error integrating exp(-x)*sinh(sqrt(x)) with domain: complex - ID: 3529144 */
409 /* need taylor expansion of gamma_incomplete(1/2, x) at x=0 */
410 limit(gamma_incomplete(1/2,(1-2*sqrt(x))^2/4)*(1-2*sqrt(x))
411                  /(sqrt((1-2*sqrt(x))^2)), x, 1/4, minus),domain:complex;
412 sqrt(%pi);
414 limit(gamma_incomplete(1/2,(1-2*sqrt(x))^2/4)*(1-2*sqrt(x))
415                  /(sqrt((1-2*sqrt(x))^2)), x, 1/4, plus),domain:complex;
416 -sqrt(%pi);
418 /* [ 635606 ] limit(abs(log(x))) internal error, UND */
419 limit(abs(log(x)), x, 0);
420 inf;
422 limit(exp(-x)*(x*sin(x)+cos(x)), x, inf);
425 /* tex(t[1]) shouldn't change t to true */
426 tex (t[1], false);
427 "$$t_{1}$$
428 "; /* tex output contains embedded newline */
430 /* tex(x[1]^2) shouldn't get confused by debug info in expression CAR */
431 (foo : x[1]^2, tex (foo, false));
432 "$$x_{1}^2$$
433 "; /* tex output contains embedded newline */
435 /* [ 2084910 ] limit bugs */
436 limit((%pi*N^(2*N+1)*2^(2*N))/((2*N-1)^(2*N)*(2*%e*N+%e)), N, inf);
437 %pi/2;
439 /* [ 1977992 ] no limit calculation */
440 limit(abs(sin(x))/sqrt(1-cos(x)), x, 0);
441 sqrt(2);
443 /* [ 1973399 ] F(x) := 1/%pi*(atan(x) + %pi/2) */
444 /* only works with taylor_logexpand:true */
445 limit( ((1/%pi)*(atan(n/%pi) + %pi/2))^n, n, inf);
446 %e^-1;
448 /* limit(x*expintegral_ei(x),x,0) --> Error - ID: 2801821 */
449 limit(x*expintegral_ei(x), x, 0);
452 /* #3865 crash from taking limit of factorial(x) + 1 */
453 limit(factorial(x) + 1, x, 0);
456 limit(1/(1-factorial(x)), x, 0, minus);
457 minf;
459 limit(1/(1-factorial(x)), x, 0, plus);
460 inf;
462 /* Limit of the factorial function - 4 problems - ID: 2841504 */
463 limit(factorial(x),x,-2,plus);
464 minf;
466 /* Calculus mistake: wrong answer: limit - ID: 3534858 */
467 limit((sin(x)-tan(x))/(x*(cos(x)-1)),x,0);
470 /* #2639 limit asks about internal variable */
471 limit(tan(x)/sqrt(tan(x)^2+1),x,%pi/2,plus);
474 limit(1/psi[1](x), x, inf);
475 inf;
477 /* limit of psi[i] - ID: 2843705 */
478 limit(psi[i](x),x,inf);
479 'limit(psi[i](x),x,inf);
481 /* tests for gruntz limit algorithm */
482 gruntz(exp(x), x, inf);
483 inf;
485 gruntz(exp(-x), x, inf);
488 gruntz( (x + 2^x) / 3^x, x, inf);
491 gruntz( x^2/(x + 2*x^2), x, inf);
492 1/2;
494 gruntz( x/x^log(x), x, inf);
497 gruntz( (2^x)/(x + exp(x)) , x, 0, plus);
500 gruntz( (erf(x))/sqrt(1-cos(x)) , x, 0, minus);
501 -2*sqrt(2)/sqrt(%pi);
503 gruntz( (erf(x))/sqrt(1-cos(x)) , x, 0, plus);
504 2*sqrt(2)/sqrt(%pi);
506 gruntz( x*(x^(1/x)-1)/log(x), x, inf);
509 gruntz( (x*x^(1/x)-x)/log(x), x, inf);
512 gruntz(exp(-1/x)/x^6,x,0,plus);
515 /* limit gives the wrong answer - ID: 3410704 */
516 limit(sqrt(t^2+4)*(((t+2/t^2)^2+4)^(3/2)-(t+2/t^2)^3-4*(t+2/t^2))
517          /(sqrt((t+2/t^2)^2+4)*((t^2+4)^(3/2)-t^3-4*t)), t, inf);
520 /* Inaccurate Limit Evaluation - ID: 3276461 */
521 radcan(limit((-4*x^2-10*x+24)/((4*x+8)^(1/3)+2), x, -4));
524 limit(-(3*n^2 + 1)*(-1)^n/sqrt(n^5 + 8*n^3 + 8),n,inf);
528  * Bug ID: 1315837 limit(?foo)
529  * Bug ID: 1119228 limit(1/zeraoa)
530  */
532 limit(?foo);
533 ?foo;
534 limit(true);
535 true;
536 limit(false);
537 false;
538 limit(1/zeroa);
539 inf;
540 limit(1/zerob);
541 minf;
544  * Bug ID: 1797296 - Crazy results when doing limit of 'diff
545  */
546 limit('diff(x+1,x),x,2);
547 limit('diff(x+1,x),x,2);
549 limit('integrate(x+1,x),x,2);
550 'limit('integrate(x+1,x),x,2);
552 /* #3767 incorrect limit (radius of convergence) */
553 limit(diff(exp(n * x), x,n)/n,n,inf);
554 'limit(diff(exp(n * x), x,n)/n,n,inf);
556 limit(integrate(f(t),t,0,x),x,0,plus);
559 limit(integrate(t,t,0,x)/x,x,inf);
560 inf;
562 (assume(a>2), limit(integrate(t/log(t),t,2,a)/a,a,inf));
563 inf;
565 /* limit(1/inf-1/minf) => 0+0 - ID: 903074 */
566 limit(1/inf-1/minf);
569 /* 1-arg limit: limit(a*inf-inf) => minf - ID: 1385306 
570 This is a long-standing bug--the kill(a) is needed. */
571 block([L1,L2,L3,L4,L5,L6], 
572    kill(a),
573    L1 :limit(a*inf-inf),
574    L2 : limit((a-1)*inf),
575    assume(a<1), 
576    L3 : limit(a*inf-inf),
577    L4 : limit((a-1)*inf),
578    forget(a < 1),
579    assume(a > 1),
580    L5 : limit(a*inf-inf),
581    L6 : limit((a-1)*inf),
582    [L1,L2,L3,L4,L5,L6]);
583 [und, und, minf, minf,inf,inf]$
585 /* limit(1 - (-1/2)^inf) --> inf - ID: 2853506 */
586 limit(1 - (-1/2)^inf);
589 /* definition of derivative in terms of limit */
590 limit((sin(3*(x+h)) - sin(3*(x)))/h, h, 0, plus);
591 3*cos(3*x);
593 /* limit incorrect for -x/sqrt(1-x^2) - ID: 2869955 */
594 limit(-x/sqrt(1-x^2), x, 1, minus);
595 minf;
597 /* limit(%i*log(a),a,0) nounform (%i*und problem) - ID: 816797 */
598 limit(%i*log(x),x,0);
599 infinity;
601 /* limit(sqrt(x),x,minf) not fully evaluated - ID: 2901855 */
602 limit(sqrt(x), x, minf);
603 infinity;
605 /* #2847 limits of powers of constants */
606 limit((5+%i)^n,n,inf);
607 infinity;
609 /* limit bug - ID: 3101075 */
610 limit((2+cos(x))/(x^3*sin(x))-3/x^4,x,0,plus);
611 1/60;
613 /* #2527 exponent too big in limit */
614 limit ((cosh(sqrt(x+1))-cosh(sqrt(x)))^(1/sqrt(x)),x,inf );
617 /* #2561 limit(log(x^2),x,-20) gives 2*log(-20) */
618 limit(log(x^2),x,-20),logexpand:false;
619 log(400);
621 /* #2412 Problems with integral (x/(exp(x)+1),x,0,inf) */
622 limit(-x*log(%e^x+1)-li[2](-%e^x)+x^2/2, x, inf);
623 %pi^2/6;
626 /* #4109 Limits of polylogarithms */
627 limit(li[3](x)/log(-x)^3,x,inf);
628 -1/6;
630 /* #4368 incorrect limit(li[2](2*exp(x*%i)), x, 0, plus) */
631 limit(li[2](2*exp(x*%i)), x, 0, plus);
632 %i*%pi*log(2)+%pi^2/4;
634 limit(li[2](2*exp(x*%i)), x, 0, minus);
635 -%i*%pi*log(2)+%pi^2/4;
637 /* The initial problem which triggers this bug */
638 declare(n,integer);
639 done;
640 limit ((sin(n*x) - n*x*cos(n*x))/n^2, x, %pi);
641 -%pi*(-1)^n/n;
643 /* #2503 Declaring x as an integer changes result of limit from 3 to inf */
644 limit((2^n+3^n)^(1/n), n,inf);
647 /* #2624 Erroneous limit result */
648 (assume(n>2), limit(x-x*(1-1/x)^n, x, inf));
651 (forget(n>2),0);
654 /* Bug ID: 593351 - limit/sin(inf)etc. should give 0, not IND
655  */
656 limit(cos(1/x)*sin(x)-sin(x),x,inf);
658 limit(cos(1/x)*sin(x)-sin(x)+a,x,inf);
661 /* Bug ID: 1376392 - limit(x/(2+sin(1/x)), x, 0); wrong result
662  */
663 limit(x/(2+sin(1/x)),x,0);
666 /* #3680 limit(x/sin(1/x),x,0); wrong */
667 limit(x/sin(1/x), x, 0, plus);
668 und;
670 /* Bug ID: 1106912 - limit(x/sin(x)^2,x,inf)
671    I think the limit is not defined because the func is not defined
672    for all x > any constant.
673  */
674 limit(x/sin(x)^2,x,inf);
675 und;
677 /* Bug ID: #3459 Wrong limit calculation */
678 limit(x / (x+2^x+cos(x)),x,-inf);
681 /* #Bug ID: #3984 limit for und + something yields something instead of und */
682 limit(x*sin(x) + erf(x), x, inf);
683 und;
685 /* Bug ID: 811522 - redundant question in limit
686  * b is assumed to be zero. Maxima now can deduce from the database
687  * that b-2 is an even number.
688  */
689 (assume(equal(b,0),notequal(x,0)),0);
691 limit(r^(b-2)*(x-r)^2,r,0);
692 inf$
693 (forget(equal(b,0)),notequal(x,0),0);
696 /* Bug ID: 221642 limit needs %piargs to be true
697  * The implementation of simp-%atan and simpatan2 has been revised.
698  * We get more limits independent of the value of %piargs.
699  */
700 %piargs:false;
701 false;
702 limit(atan2(0,y),y,0,plus);
703 atan(0);
704 limit(atan2(0,y),y,0,minus);
705 %pi;
706 limit(atan2(x,0),x,0,plus);
707 %pi/2;
708 limit(atan2(x,0),x,0,minus);
709 -%pi/2;
710 reset(%piargs);
711 [%piargs];
713 /* Bug ID: 3002971 - limit fails where rat+subst works
714  */
715 limit(min(x,x+2,sin(x)/x),x,0);
717 limit(max(x,x+2,sin(x)/x),x,0);
720 /* Bug ID: 1969790 - limits and subscripts
721  */
722 limit(mu[inf],x,inf);
723 mu[inf];
726  * Bug 3509430: limit of tanh(x) at 0 makes no sense
727  */
728 limit(tanh(x), x, 0);
731 /* bug 2535: stack exhausted when computing limit(log(..)) */
733 limit(log(-1/3125*((-1/2*sqrt(5) + 1/2)^n - (1/2*sqrt(5) +
734 1/2)^n)^9*sqrt(5))/log(-1/5*((-1/2*sqrt(5) + 1/2)^(8*n) - (1/2*sqrt(5) +
735 1/2)^(8*n))*((-1/2*sqrt(5) + 1/2)^n - (1/2*sqrt(5) + 1/2)^n) -
736 1/5*((-1/2*sqrt(5) + 1/2)^(9*n) - (1/2*sqrt(5) +
737 1/2)^(9*n))*sqrt(5)),n,inf);
740 /* #2675 maxima will not do the simplest of definite integrals 
741    and will not factor otherwise */
742 limit(x^2*exp(-%i*x - x), x, inf);
745 /* bug #2621 gamma limit error */
747 limit(gamma(x+1/2)/(sqrt(x)*gamma(x)), x, inf);
750 /* Triggered by #2849. This result isn't great, but it's better than
751    an error. A more useful result would be und. */
752 limit (ind * inf);
753 ind * inf $
755 limit((a*exp(a*x)*sin(b*x))/(b^2+a^2)-(b*exp(a*x)*cos(b*x))/(b^2+a^2), x, 0, plus);
756 -(b/(a^2 + b^2));
758 /* Bug #2898: limit of continuous --> und */
760 limit(log(x)^2+2*log(x)+q/2+1,x,1);
761 q/2+1$
763 limit(log(x)^2+2*%gamma*log(x)-%pi^2/6+%gamma^2,x,1);
764 %gamma^2-%pi^2/6$
766 /* #2972 Wrong limits involving logs */
767 limit( 27^(log(n)/log(3))/n^3, n, inf);
770 limit( 27^(log(n)/log(3)+1)/n^3, n, inf);
773 limit( ((27^(log(n)/log(3)+1)-1)/26+n-log(n)/log(3)-1)/n^3,n,inf);
774 27/26;
776 /* examples from mailing list 2014-10-10: "Re: bug in limit code" */
778 (newcontext (), 
779  kill (beta, hbar, omega, delta, n),
780  assume (beta > 0, hbar > 0, omega > 0, delta > 0, 2*n - 1 > 0),
781  0);
784 limit (%e^(beta*hbar*omega-beta*(hbar*(2*n+1)*omega+delta))
785  /(1/(1-%e^-(beta*hbar*omega))^2
786  +(%e^-(beta*delta)-1)/(1-%e^-(2*beta*hbar*omega))), beta, inf);
789 (kill (h, d, z),
790  assume (h > 0, d > 0, z > 0, 2*h*z > d),
791  0);
794 limit ((%e^-(b*d)-1)/(1-%e^-(2*b*h*z)), b, inf);
797 (kill (a), assume (a < 0), 0);
800 limit (exp (b*a), b, inf);
803 limit((exp(a*x)-1)/(exp(a*x)+1),x,inf) ;
806 (forget (a < 0), assume (a > 0), 0);
809 limit((exp(a*x)-1)/(exp(a*x)+1),x,inf) ;
812 (forget (a > 0), assume (equal (a, 0)), 0);
815 limit((exp(a*x)-1)/(exp(a*x)+1),x,inf) ;
818 (forget (equal (a, 0)), assume (a > 0), 0);
821 integrate(%e^(-a*r)*sin(k*r),r,0,inf);
822 k/(k^2+a^2);
824 limit (a*x, x, inf);
825 inf;
827 (forget (a > 0), assume (a < 0), limit (a*x, x, inf));
828 minf;
830 (forget (a < 0), assume (equal (a, 0)), limit (a*x, x, inf));
833 killcontext (context);
834 done;
836 /* SF bug #3104: "limit(log(1 - exp(x)), x, 0, plus), numer => stack overflow" */
838 limit(log(1 - exp(x)), x, 0, plus);
839 infinity;
841 limit(log(1 - exp(x)), x, 0, plus), numer;
842 infinity;
844 limit(log(1 + exp(x)), x, 0, plus);
845 log(2);
847 limit(log(1 + exp(x)), x, 0, plus), numer;
848 0.6931471805599453;
850 /* inspired by this example from #3103; for the present purpose,
851  * it's not too important to get these specific results,
852  * only that numer doesn't cause an error here.
853  */
855 integrate(x^3/(exp(x)-1),x,0,inf);
856 %pi^4/15$
859 block([numer : true,ratprint : false], integrate(x^3/(exp(x)-1),x,0,inf));
860  6.493939402266837$
862 /* #3142 limit((x^(1/x) - 1)*sqrt(x), x, inf) => inf */
863 limit((x^(1/x) - 1)*sqrt(x), x, inf);
866 /* #3143 limit((x^(1/x) - 1)*sqrt(x), x, 0, minus) => inf */
867 limit((x^(1/x) - 1)*sqrt(x), x, 0, minus);
868 infinity$
870 /* SF bug #3185: "Error in sum with non-false modulus" */
872 block([modulus:7], sum(i^-2,i,1,inf));
873 'sum(i^-2,i,1,inf);
875 block([modulus:7], limit(inf));
876 inf;
878 /* SF bug #3235: "ECL lisp arithmetic error in definite integration with large limits"
879  * the bug is actually in ECL (https://gitlab.com/embeddable-common-lisp/ecl/issues/299);
880  * here we'll test a work around.
881  */
883 block ([actual, expected],
884   actual : limit(x*exp(x)*log(exp(x)+1),x,-1000,plus),
885   expected : -1000*%e^-1000*log(%e^-1000*(%e^1000+1)),
886   if ev (equal (actual, expected), logexpand='super) then true else [actual, expected]);
887 true;
889 /* accommodate different equivalent forms via 'equal' */
890 block ([actual, expected],
891   actual : integrate((x^2)*exp(x) / (1 + exp(x))^2,x,-1000,1000),
892   expected : (-(2000*%e^1000*log(%e^-1000*(%e^1000+1)))/(%e^1000+1))
893   -(2000*log(%e^-1000*(%e^1000+1)))/(%e^1000+1)
894    -((2000*%e^1000+2000)*log(%e^1000+1)
895     +(2*%e^1000+2)*li[2](-%e^1000)-1000000*%e^1000)
896      /(%e^1000+1)+(2*%e^1000*li[2](-%e^-1000))/(%e^1000+1)
897      +(2*li[2](-%e^-1000))/(%e^1000+1)-1000000/(%e^1000+1),
898   if ev (equal (actual, expected), logexpand='super) then true else [actual, expected]);
899 true;
901 /* SF bug #3244: "error trying to promote float infinity to bigfloat in sign comparison"
902  * same as test under #3235 but ensure that bigfloat assume is present to trigger bug
903  */
905 block ([actual, expected, ctxt:newcontext()],
906   assume (xfoo > 200b0),
907   actual : limit(xfoo*exp(xfoo)*log(exp(xfoo)+1),xfoo,-1000,plus),
908   expected : -1000*%e^-1000*log(%e^-1000*(%e^1000+1)),
909   killcontext (ctxt),
910   if ev (equal (actual, expected), logexpand='super) then true else [actual, expected]);
911 true;
913 /* SF bug #3826: "limit returns temp variable expression" */
915 (kill (q, a, x),
916  ctxt: newcontext (),
917  assume (q > 0),
918  limit(x^q/(a*x^q- 1),x,inf));
919 'limit(x^q/(a*x^q- 1),x,inf);
921 tlimit(x^q/(a*x^q- 1),x,inf);
922 'limit(x^q/(a*x^q- 1),x,inf);
924 (assume (a > 0),
925  declare (q, integer),
926  limit(x^q/(a*x^q- 1),x,inf));
927 1/a;
929 (remove (q, integer),
930  declare (q, noninteger),
931  limit(x^q/(a*x^q- 1),x,inf));
932 1/a;
935  * limit(li[3](sin(x)), x, %pi/2) was returning a noun form.
936  */
937 makelist(subst(n=k, limit(li[n](sin(x)), x, %pi/2)), k, 2, 5);
938 [zeta(2), zeta(3), zeta(4), zeta(5)];
940 limit(li[3](sin(x)+x-%pi/2), x, %pi/2);
941 zeta(3);
943 (remove (q, noninteger),
944  killcontext (ctxt));
945 done;
947 /* Bug #3926: Various limits give UND where they should give IND */
949 limit(unit_step(x),x,0);
950 ind;
952 limit(abs(x)/x,x,0);
953 ind;
955 limit(x/abs(x),x,0);
956 ind;
958 limit(exp(1/x),x,0);
959 und;
961 limit(exp(1/x)*sin(1/x),x,0);
962 und;
964 limit(exp(-1/x)*sin(1/x),x,0);
965 und;
967 /* Bug #3071: limit of expressions with signum not very powerful */
969 limit(signum(x)^a,x,0); /* It would be better if this asked about a */
970 ind;
972 limit(signum(x)*x/sin(x),x,0);
973 ind;
975 /* #895 limit x->inf sin(100/x)*x very slow */
976 block([start : absolute_real_time()],
977   [limit(sin(100/x)*x,x,inf), 
978    limit(sin(10000/x)*x,x,inf),
979    limit(sin(10000000/x)*x,x,inf),
980    is(absolute_real_time()-start < 1)]);
981  [100, 10000, 10000000, true]$
983 /* #4273 limit(integrate(f(x)*g(x), x), x, a) incorrect results */
984  limit(integrate (abs(x) * cos(x), x), x, 1);
985  'limit('integrate(cos(x)*abs(x),x),x,1);
987 limit(integrate (abs(x) * exp(x), x), x, 1);
988 'limit(integrate (abs(x) * exp(x), x), x, 1);
990 limit(integrate (bessel_j(0, x) * exp(x), x), x, 1);
991 'limit(integrate (bessel_j(0, x) * exp(x), x), x, 1);
993 limit(integrate (bessel_j(0, x) * unit_step(x), x), x, 1);
994 'limit(integrate (bessel_j(0, x) * unit_step(x), x), x, 1);
996 (remvalue(foo), limit (integrate (bessel_j(0, x) * foo(x), x), x, 1));
997 'limit (integrate (bessel_j(0, x) * foo(x), x), x, 1);
999  limit (integrate (baz(0, x) * unit_step(x), x), x, 1);
1000 'limit (integrate (baz(0, x) * unit_step(x), x), x, 1);
1002 limit (integrate (baz(0, x) * foo(x), x), x, 1);
1003  'limit (integrate (baz(0, x) * foo(x), x), x, 1);
1005  /* #4275 ldefint returns zero */
1007  /* not wrong and not optimal*/
1008  ldefint(floor(x)*exp(x),x,2,3);
1009  'limit('integrate(%e^x*floor(x),x),x,3,minus)-'limit('integrate(%e^x*floor(x),x),x,2,plus);
1011  (remvalue(foo, ctxt),0);
1012  0$
1014  contexts;
1015  [initial,global]$
1017 (kill(facts),0);