When autoloading a Maxima script, avoid clobbering global state.
[maxima.git] / tests / rtest_signum.mac
blob213182dfbbd9d33dc23e5d8366aa9b9d3b066638
1 (kill(all),0);
2 0$
4 /* numbers */
6 map('signum,[-2, -2/3, -3.4b-2, -7.8b-32]);
7 [- 1, - 1, - 1.0b0, - 1.0b0]$
9 map('signum,[0,0.0, 0.0b0]);
10 [0,0.0,0.0b0]$
12 map('signum,[2, 2/3, 3.4b-2, 7.8b-32]);
13 [1,1,1.0b0,1.0b0]$
15 map('signum, [minf, %pi, %e, %phi, inf]);
16 [-1,1,1,1,1]$
18 signum(x);
19 signum(x)$
21 signum(rat(x));
22 signum(x)$
24 /* reflection */
26 signum(a) + signum(-a)$
29 signum(a - b) + signum(b-a);
32 signum(rat(a-b)) + signum(rat(b-a));
35 /* expunge negative or positive factors */
37 signum(sqrt(6) * x);
38 signum(x)$
40 signum(-sqrt(5) * x);
41 -signum(x)$
43 signum(x^2 + 1);
46 /* nounform for complex */
48 (declare(z, complex),0);
51 signum(z);
52 signum(z)$
54 signum(%i);
55 signum(%i)$
57 signum(%i - 6);
58 signum(%i - 6)$
60 signum(z^2 + 1);
61 signum(z^2 + 1)$
63 (assume(p > 0, n < 0, pz >= 0, nz <= 0),0);
66 signum(p * x);
67 signum(x)$
69 signum(n * x);
70 -signum(x)$
72 signum(pz * x);
73 signum(pz * x)$
75 signum(nz * x);
76 signum(nz * x)$
78 signum(p * n * x);
79 -signum(x)$
81 signum(signum(x));
82 signum(x)$
84 factor(signum(p * x + p));
85 signum(x + 1)$
87 factor(signum(p * x^2 + p));
90 signum(p * x) - signum(x);
93 signum(n * x) + signum(x);
96 signum(%i * sqrt(1 - sqrt(2)));
97 -1$
99 limit(signum(x),x,minf);
102 limit(signum(x),x,0,'minus);
105 limit(signum(x),x,0);
106 ind$
108 limit(signum(x),x,0,'plus);
111 limit(signum(x),x,inf);
114 limit(x * signum(x),x,0);
117 limit(signum(x+a),x,minf);
120 limit(signum(x+a),x,inf);
123 (assume(notequal(a,0)),0);
126 limit(signum(x),x,a);
127 signum(a)$
129 limit(signum(a*x),x,minf);
130 -signum(a)$
132 limit(signum(a*x),x,inf);
133 signum(a)$
135 limit(signum(x),x,1/a);
136 signum(1/a)$
138 realpart(signum(x));
139 signum(x)$
141 imagpart(signum(x));
144 rectform(signum(x));
145 signum(x)$
147 rectform(signum(x + %i));
148 x/sqrt(x^2+1)+%i/sqrt(x^2+1)$
150 rectform(signum(42 + %i*x));
151 %i*x/sqrt(x^2+1764)+42/sqrt(x^2+1764)$
153 rectform(signum(x+%i*y));
154 realpart(signum(%i*y+x))+%i*imagpart(signum(%i*y+x))$
156 (forget(p > 0, n < 0, pz >= 0, nz <= 0,notequal(a,0)), remove(z,complex), 0);
159 /* SF bug #2242: "integrating function with signum incorrect" */
161 integrate(x*signum(x^2-1/4),x,-1,0);
162 -1/4$
164 /* SF bug #3123: "integrate(x*signum(x^2 - 4), x, 0, 3) yields spurious result" */
166 integrate(x*signum(x^2 - 4), x, 0, 3);
167 1/2$
169 /* integrate can handle signum if it has constant sign between limits of integration */
171 integrate(x*signum(x^2-1/4),x, -1, -1/2);
172 -3/8;
174 integrate(x*signum(x^2-1/4),x, -1/2, 1/2);
177 integrate(x*signum(x^2-1/4),x, 1/2, 1);
178 3/8;
180 /* ... or it's an odd function from -a to a */
182 integrate(x*signum(x^2-1/4),x,-1,1);
185 /* other integrate(signum) examples */
187 integrate(x*signum(x^3 - 8), x, 0, 3);
188 'integrate(x*signum(x^3 - 8), x, 0, 3);
190 integrate(x*signum(x^3 - 8), x, -2, 5);
191 'integrate(x*signum(x^3 - 8), x, -2, 5);
193 integrate(x*signum(x^3 - 8), x, 2, 5);
194 21/2;
196 /* Tests for new (August, 2020) integrals of signum, unit_step, and mod. */
198 integrate(signum(x),x);
199 abs(x)$
201 integrate(-signum(-x),x);
202 abs(x)$
204 integrate(signum(a),a,-107,107);
207 integrate(signum(a),a,0,107);
208 107$
210 integrate(unit_step(x),x);
211 (x + abs(x))/2$
213 integrate(unit_step(x),x);
214 (x + abs(x))/2$
216 integrate(-unit_step(-x),x);
217 (abs(x)-x)/2$
219 integrate(mod(x,b),x);
220 (mod(x,b)^2-b*mod(x,b)+b*x)/2$
222 integrate(mod(x,b),x,0,b);
223 b^2/2$
225 integrate(mod(x,b),x,0,2*b);
226 b^2$
228 integrate(mod(x,b),x,0,42*b);
229 21*b^2$