1023dd3b8Sopenharmony_ci// Tests immutability of operand[s] for all applicable methods.
2023dd3b8Sopenharmony_ci// Also tests each Decimal.prototype method against its equivalent Decimal method where applicable.
3023dd3b8Sopenharmony_ciif (typeof T === 'undefined') require('../setup');
4023dd3b8Sopenharmony_ci
5023dd3b8Sopenharmony_ciT('immutability', function () {
6023dd3b8Sopenharmony_ci
7023dd3b8Sopenharmony_ci  Decimal.config({
8023dd3b8Sopenharmony_ci    precision: 20,
9023dd3b8Sopenharmony_ci    rounding: 4,
10023dd3b8Sopenharmony_ci    toExpNeg: -7,
11023dd3b8Sopenharmony_ci    toExpPos: 21,
12023dd3b8Sopenharmony_ci    minE: -9e15,
13023dd3b8Sopenharmony_ci    maxE: 9e15
14023dd3b8Sopenharmony_ci  });
15023dd3b8Sopenharmony_ci
16023dd3b8Sopenharmony_ci  // Integer [0, 9e15), with each possible number of digits, [1, 16], equally likely.
17023dd3b8Sopenharmony_ci  function randInt() {
18023dd3b8Sopenharmony_ci    return Math.floor(Math.random() * 9e15 / Math.pow(10, Math.random() * 16 | 0));
19023dd3b8Sopenharmony_ci  }
20023dd3b8Sopenharmony_ci
21023dd3b8Sopenharmony_ci  var a, aa, b, bb, i, k, n, t, v, x, y, z;
22023dd3b8Sopenharmony_ci
23023dd3b8Sopenharmony_ci  t = T.assertEqualDecimal;
24023dd3b8Sopenharmony_ci
25023dd3b8Sopenharmony_ci  v = [
26023dd3b8Sopenharmony_ci    0,
27023dd3b8Sopenharmony_ci    NaN,
28023dd3b8Sopenharmony_ci    Infinity,
29023dd3b8Sopenharmony_ci    -Infinity,
30023dd3b8Sopenharmony_ci    0.5,
31023dd3b8Sopenharmony_ci    -0.5,
32023dd3b8Sopenharmony_ci    1,
33023dd3b8Sopenharmony_ci    -1,
34023dd3b8Sopenharmony_ci    (x = Decimal.random()),
35023dd3b8Sopenharmony_ci    x.neg(),
36023dd3b8Sopenharmony_ci    (x = randInt()),
37023dd3b8Sopenharmony_ci    -x,
38023dd3b8Sopenharmony_ci    (x = Decimal.random().plus(randInt())),
39023dd3b8Sopenharmony_ci    x.neg()
40023dd3b8Sopenharmony_ci  ];
41023dd3b8Sopenharmony_ci
42023dd3b8Sopenharmony_ci  for (i = 0; i < v.length; i++) {
43023dd3b8Sopenharmony_ci    a = new Decimal(v[i]);
44023dd3b8Sopenharmony_ci    aa = new Decimal(v[i]);
45023dd3b8Sopenharmony_ci    k = (Math.random() * 10 | 0) / 10;
46023dd3b8Sopenharmony_ci    b = k == 0.5 ? new Decimal(a) : a[k < 0.5 ? 'plus' : 'minus'](Decimal.random().plus(randInt()));
47023dd3b8Sopenharmony_ci    bb = new Decimal(b);
48023dd3b8Sopenharmony_ci    n = Math.random() * 20 + 1 | 0;
49023dd3b8Sopenharmony_ci
50023dd3b8Sopenharmony_ci    x = a.absoluteValue();
51023dd3b8Sopenharmony_ci    t(a, aa);
52023dd3b8Sopenharmony_ci    y = a.abs();
53023dd3b8Sopenharmony_ci    t(a, aa);
54023dd3b8Sopenharmony_ci    z = Decimal.abs(a);
55023dd3b8Sopenharmony_ci    t(a, aa);
56023dd3b8Sopenharmony_ci
57023dd3b8Sopenharmony_ci    t(x, y);
58023dd3b8Sopenharmony_ci    t(y, z);
59023dd3b8Sopenharmony_ci
60023dd3b8Sopenharmony_ci    x = a.ceil();
61023dd3b8Sopenharmony_ci    t(a, aa);
62023dd3b8Sopenharmony_ci    y = Decimal.ceil(a);
63023dd3b8Sopenharmony_ci    t(a, aa);
64023dd3b8Sopenharmony_ci
65023dd3b8Sopenharmony_ci    t(x, y);
66023dd3b8Sopenharmony_ci
67023dd3b8Sopenharmony_ci    x = a.comparedTo(b);
68023dd3b8Sopenharmony_ci    t(a, aa);
69023dd3b8Sopenharmony_ci    t(b, bb);
70023dd3b8Sopenharmony_ci    y = a.cmp(b);
71023dd3b8Sopenharmony_ci    t(a, aa);
72023dd3b8Sopenharmony_ci    t(b, bb);
73023dd3b8Sopenharmony_ci
74023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
75023dd3b8Sopenharmony_ci
76023dd3b8Sopenharmony_ci    x = a.cosine();
77023dd3b8Sopenharmony_ci    t(a, aa);
78023dd3b8Sopenharmony_ci    y = a.cos();
79023dd3b8Sopenharmony_ci    t(a, aa);
80023dd3b8Sopenharmony_ci    z = Decimal.cos(a);
81023dd3b8Sopenharmony_ci    t(a, aa);
82023dd3b8Sopenharmony_ci
83023dd3b8Sopenharmony_ci    t(x, y);
84023dd3b8Sopenharmony_ci    t(y, z);
85023dd3b8Sopenharmony_ci
86023dd3b8Sopenharmony_ci    x = a.cubeRoot();
87023dd3b8Sopenharmony_ci    t(a, aa);
88023dd3b8Sopenharmony_ci    y = a.cbrt();
89023dd3b8Sopenharmony_ci    t(a, aa);
90023dd3b8Sopenharmony_ci    z = Decimal.cbrt(a);
91023dd3b8Sopenharmony_ci    t(a, aa);
92023dd3b8Sopenharmony_ci
93023dd3b8Sopenharmony_ci    t(x, y);
94023dd3b8Sopenharmony_ci    t(y, z);
95023dd3b8Sopenharmony_ci
96023dd3b8Sopenharmony_ci    x = a.decimalPlaces();
97023dd3b8Sopenharmony_ci    t(a, aa);
98023dd3b8Sopenharmony_ci    y = a.dp();
99023dd3b8Sopenharmony_ci    t(a, aa);
100023dd3b8Sopenharmony_ci
101023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
102023dd3b8Sopenharmony_ci
103023dd3b8Sopenharmony_ci    x = a.dividedBy(b);
104023dd3b8Sopenharmony_ci    t(a, aa);
105023dd3b8Sopenharmony_ci    t(b, bb);
106023dd3b8Sopenharmony_ci    y = a.div(b);
107023dd3b8Sopenharmony_ci    t(a, aa);
108023dd3b8Sopenharmony_ci    t(b, bb);
109023dd3b8Sopenharmony_ci    z = Decimal.div(a, b);
110023dd3b8Sopenharmony_ci    t(a, aa);
111023dd3b8Sopenharmony_ci    t(b, bb);
112023dd3b8Sopenharmony_ci
113023dd3b8Sopenharmony_ci    t(x, y);
114023dd3b8Sopenharmony_ci    t(y, z);
115023dd3b8Sopenharmony_ci
116023dd3b8Sopenharmony_ci    x = a.dividedToIntegerBy(b);
117023dd3b8Sopenharmony_ci    t(a, aa);
118023dd3b8Sopenharmony_ci    t(b, bb);
119023dd3b8Sopenharmony_ci    y = a.divToInt(b);
120023dd3b8Sopenharmony_ci    t(a, aa);
121023dd3b8Sopenharmony_ci    t(b, bb);
122023dd3b8Sopenharmony_ci
123023dd3b8Sopenharmony_ci    t(x, y);
124023dd3b8Sopenharmony_ci
125023dd3b8Sopenharmony_ci    x = a.equals(b);
126023dd3b8Sopenharmony_ci    t(a, aa);
127023dd3b8Sopenharmony_ci    t(b, bb);
128023dd3b8Sopenharmony_ci    y = a.eq(b);
129023dd3b8Sopenharmony_ci    t(a, aa);
130023dd3b8Sopenharmony_ci    t(b, bb);
131023dd3b8Sopenharmony_ci
132023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
133023dd3b8Sopenharmony_ci
134023dd3b8Sopenharmony_ci    x = a.floor();
135023dd3b8Sopenharmony_ci    t(a, aa);
136023dd3b8Sopenharmony_ci    y = Decimal.floor(a);
137023dd3b8Sopenharmony_ci    t(a, aa);
138023dd3b8Sopenharmony_ci
139023dd3b8Sopenharmony_ci    t(x, y);
140023dd3b8Sopenharmony_ci
141023dd3b8Sopenharmony_ci    x = a.greaterThan(b);
142023dd3b8Sopenharmony_ci    t(a, aa);
143023dd3b8Sopenharmony_ci    t(b, bb);
144023dd3b8Sopenharmony_ci    y = a.gt(b);
145023dd3b8Sopenharmony_ci    t(a, aa);
146023dd3b8Sopenharmony_ci    t(b, bb);
147023dd3b8Sopenharmony_ci
148023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
149023dd3b8Sopenharmony_ci
150023dd3b8Sopenharmony_ci    x = a.greaterThanOrEqualTo(b);
151023dd3b8Sopenharmony_ci    t(a, aa);
152023dd3b8Sopenharmony_ci    t(b, bb);
153023dd3b8Sopenharmony_ci    y = a.gte(b);
154023dd3b8Sopenharmony_ci    t(a, aa);
155023dd3b8Sopenharmony_ci    t(b, bb);
156023dd3b8Sopenharmony_ci
157023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
158023dd3b8Sopenharmony_ci
159023dd3b8Sopenharmony_ci    // Omit hyperbolic methods if a is large, as they are too time-consuming.
160023dd3b8Sopenharmony_ci    if (a.abs().lt(1000)) {
161023dd3b8Sopenharmony_ci      x = a.hyperbolicCosine();
162023dd3b8Sopenharmony_ci      t(a, aa);
163023dd3b8Sopenharmony_ci      y = a.cosh();
164023dd3b8Sopenharmony_ci      t(a, aa);
165023dd3b8Sopenharmony_ci      z = Decimal.cosh(a);
166023dd3b8Sopenharmony_ci      t(a, aa);
167023dd3b8Sopenharmony_ci
168023dd3b8Sopenharmony_ci      t(x, y);
169023dd3b8Sopenharmony_ci      t(y, z);
170023dd3b8Sopenharmony_ci
171023dd3b8Sopenharmony_ci      x = a.hyperbolicSine();
172023dd3b8Sopenharmony_ci      t(a, aa);
173023dd3b8Sopenharmony_ci      y = a.sinh();
174023dd3b8Sopenharmony_ci      t(a, aa);
175023dd3b8Sopenharmony_ci      z = Decimal.sinh(a);
176023dd3b8Sopenharmony_ci      t(a, aa);
177023dd3b8Sopenharmony_ci
178023dd3b8Sopenharmony_ci      t(x, y);
179023dd3b8Sopenharmony_ci      t(y, z);
180023dd3b8Sopenharmony_ci
181023dd3b8Sopenharmony_ci      x = a.hyperbolicTangent();
182023dd3b8Sopenharmony_ci      t(a, aa);
183023dd3b8Sopenharmony_ci      y = a.tanh();
184023dd3b8Sopenharmony_ci      t(a, aa);
185023dd3b8Sopenharmony_ci      z = Decimal.tanh(a);
186023dd3b8Sopenharmony_ci      t(a, aa);
187023dd3b8Sopenharmony_ci
188023dd3b8Sopenharmony_ci      t(x, y);
189023dd3b8Sopenharmony_ci      t(y, z);
190023dd3b8Sopenharmony_ci    }
191023dd3b8Sopenharmony_ci
192023dd3b8Sopenharmony_ci    // a [-1, 1]
193023dd3b8Sopenharmony_ci    x = a.inverseCosine();
194023dd3b8Sopenharmony_ci    t(a, aa);
195023dd3b8Sopenharmony_ci    y = a.acos();
196023dd3b8Sopenharmony_ci    t(a, aa);
197023dd3b8Sopenharmony_ci    z = Decimal.acos(a);
198023dd3b8Sopenharmony_ci    t(a, aa);
199023dd3b8Sopenharmony_ci
200023dd3b8Sopenharmony_ci    t(x, y);
201023dd3b8Sopenharmony_ci    t(y, z);
202023dd3b8Sopenharmony_ci
203023dd3b8Sopenharmony_ci    // a [1, Infinity]
204023dd3b8Sopenharmony_ci    x = a.inverseHyperbolicCosine();
205023dd3b8Sopenharmony_ci    t(a, aa);
206023dd3b8Sopenharmony_ci    y = a.acosh();
207023dd3b8Sopenharmony_ci    t(a, aa);
208023dd3b8Sopenharmony_ci    z = Decimal.acosh(a);
209023dd3b8Sopenharmony_ci    t(a, aa);
210023dd3b8Sopenharmony_ci
211023dd3b8Sopenharmony_ci    t(x, y);
212023dd3b8Sopenharmony_ci    t(y, z);
213023dd3b8Sopenharmony_ci
214023dd3b8Sopenharmony_ci    x = a.inverseHyperbolicSine();
215023dd3b8Sopenharmony_ci    t(a, aa);
216023dd3b8Sopenharmony_ci    y = a.asinh();
217023dd3b8Sopenharmony_ci    t(a, aa);
218023dd3b8Sopenharmony_ci    z = Decimal.asinh(a);
219023dd3b8Sopenharmony_ci    t(a, aa);
220023dd3b8Sopenharmony_ci
221023dd3b8Sopenharmony_ci    t(x, y);
222023dd3b8Sopenharmony_ci    t(y, z);
223023dd3b8Sopenharmony_ci
224023dd3b8Sopenharmony_ci    // a [-1, 1]
225023dd3b8Sopenharmony_ci    x = a.inverseHyperbolicTangent();
226023dd3b8Sopenharmony_ci    t(a, aa);
227023dd3b8Sopenharmony_ci    y = a.atanh();
228023dd3b8Sopenharmony_ci    t(a, aa);
229023dd3b8Sopenharmony_ci    z = Decimal.atanh(a);
230023dd3b8Sopenharmony_ci    t(a, aa);
231023dd3b8Sopenharmony_ci
232023dd3b8Sopenharmony_ci    t(x, y);
233023dd3b8Sopenharmony_ci    t(y, z);
234023dd3b8Sopenharmony_ci
235023dd3b8Sopenharmony_ci    // a [-1, 1]
236023dd3b8Sopenharmony_ci    x = a.inverseSine();
237023dd3b8Sopenharmony_ci    t(a, aa);
238023dd3b8Sopenharmony_ci    y = a.asin();
239023dd3b8Sopenharmony_ci    t(a, aa);
240023dd3b8Sopenharmony_ci    z = Decimal.asin(a);
241023dd3b8Sopenharmony_ci    t(a, aa);
242023dd3b8Sopenharmony_ci
243023dd3b8Sopenharmony_ci    t(x, y);
244023dd3b8Sopenharmony_ci    t(y, z);
245023dd3b8Sopenharmony_ci
246023dd3b8Sopenharmony_ci    x = a.inverseTangent();
247023dd3b8Sopenharmony_ci    t(a, aa);
248023dd3b8Sopenharmony_ci    y = a.atan();
249023dd3b8Sopenharmony_ci    t(a, aa);
250023dd3b8Sopenharmony_ci    z = Decimal.atan(a);
251023dd3b8Sopenharmony_ci    t(a, aa);
252023dd3b8Sopenharmony_ci
253023dd3b8Sopenharmony_ci    t(x, y);
254023dd3b8Sopenharmony_ci    t(y, z);
255023dd3b8Sopenharmony_ci
256023dd3b8Sopenharmony_ci    a.isFinite();
257023dd3b8Sopenharmony_ci    t(a, aa);
258023dd3b8Sopenharmony_ci
259023dd3b8Sopenharmony_ci    x = a.isInteger();
260023dd3b8Sopenharmony_ci    t(a, aa);
261023dd3b8Sopenharmony_ci    y = a.isInt();
262023dd3b8Sopenharmony_ci    t(a, aa);
263023dd3b8Sopenharmony_ci
264023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
265023dd3b8Sopenharmony_ci
266023dd3b8Sopenharmony_ci    a.isNaN();
267023dd3b8Sopenharmony_ci    t(a, aa);
268023dd3b8Sopenharmony_ci
269023dd3b8Sopenharmony_ci    x = a.isNegative();
270023dd3b8Sopenharmony_ci    t(a, aa);
271023dd3b8Sopenharmony_ci    y = a.isNeg();
272023dd3b8Sopenharmony_ci    t(a, aa);
273023dd3b8Sopenharmony_ci
274023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
275023dd3b8Sopenharmony_ci
276023dd3b8Sopenharmony_ci    x = a.isPositive();
277023dd3b8Sopenharmony_ci    t(a, aa);
278023dd3b8Sopenharmony_ci    y = a.isPos();
279023dd3b8Sopenharmony_ci    t(a, aa);
280023dd3b8Sopenharmony_ci
281023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
282023dd3b8Sopenharmony_ci
283023dd3b8Sopenharmony_ci    a.isZero();
284023dd3b8Sopenharmony_ci    t(a, aa);
285023dd3b8Sopenharmony_ci
286023dd3b8Sopenharmony_ci    x = a.lessThan(b);
287023dd3b8Sopenharmony_ci    t(a, aa);
288023dd3b8Sopenharmony_ci    t(b, bb);
289023dd3b8Sopenharmony_ci    y = a.lt(b);
290023dd3b8Sopenharmony_ci    t(a, aa);
291023dd3b8Sopenharmony_ci    t(b, bb);
292023dd3b8Sopenharmony_ci
293023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
294023dd3b8Sopenharmony_ci
295023dd3b8Sopenharmony_ci    x = a.lessThanOrEqualTo(b);
296023dd3b8Sopenharmony_ci    t(a, aa);
297023dd3b8Sopenharmony_ci    t(b, bb);
298023dd3b8Sopenharmony_ci    y = a.lte(b);
299023dd3b8Sopenharmony_ci    t(a, aa);
300023dd3b8Sopenharmony_ci    t(b, bb);
301023dd3b8Sopenharmony_ci
302023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
303023dd3b8Sopenharmony_ci
304023dd3b8Sopenharmony_ci    x = a.logarithm();
305023dd3b8Sopenharmony_ci    t(a, aa);
306023dd3b8Sopenharmony_ci    y = a.log();
307023dd3b8Sopenharmony_ci    t(a, aa);
308023dd3b8Sopenharmony_ci    z = Decimal.log(a);
309023dd3b8Sopenharmony_ci    t(a, aa);
310023dd3b8Sopenharmony_ci
311023dd3b8Sopenharmony_ci    t(x, y);
312023dd3b8Sopenharmony_ci    t(y, z);
313023dd3b8Sopenharmony_ci
314023dd3b8Sopenharmony_ci    x = a.minus(b);
315023dd3b8Sopenharmony_ci    t(a, aa);
316023dd3b8Sopenharmony_ci    t(b, bb);
317023dd3b8Sopenharmony_ci    y = a.sub(b);
318023dd3b8Sopenharmony_ci    t(a, aa);
319023dd3b8Sopenharmony_ci    t(b, bb);
320023dd3b8Sopenharmony_ci    z = Decimal.sub(a, b);
321023dd3b8Sopenharmony_ci    t(a, aa);
322023dd3b8Sopenharmony_ci    t(b, bb);
323023dd3b8Sopenharmony_ci
324023dd3b8Sopenharmony_ci    t(x, y);
325023dd3b8Sopenharmony_ci    t(y, z);
326023dd3b8Sopenharmony_ci
327023dd3b8Sopenharmony_ci    x = a.modulo(b);
328023dd3b8Sopenharmony_ci    t(a, aa);
329023dd3b8Sopenharmony_ci    t(b, bb);
330023dd3b8Sopenharmony_ci    y = a.mod(b);
331023dd3b8Sopenharmony_ci    t(a, aa);
332023dd3b8Sopenharmony_ci    t(b, bb);
333023dd3b8Sopenharmony_ci    z = Decimal.mod(a, b);
334023dd3b8Sopenharmony_ci    t(a, aa);
335023dd3b8Sopenharmony_ci    t(b, bb);
336023dd3b8Sopenharmony_ci
337023dd3b8Sopenharmony_ci    t(x, y);
338023dd3b8Sopenharmony_ci    t(y, z);
339023dd3b8Sopenharmony_ci
340023dd3b8Sopenharmony_ci    x = a.naturalExponential();
341023dd3b8Sopenharmony_ci    t(a, aa);
342023dd3b8Sopenharmony_ci    y = a.exp();
343023dd3b8Sopenharmony_ci    t(a, aa);
344023dd3b8Sopenharmony_ci    z = Decimal.exp(a);
345023dd3b8Sopenharmony_ci    t(a, aa);
346023dd3b8Sopenharmony_ci
347023dd3b8Sopenharmony_ci    t(x, y);
348023dd3b8Sopenharmony_ci    t(y, z);
349023dd3b8Sopenharmony_ci
350023dd3b8Sopenharmony_ci    x = a.naturalLogarithm();
351023dd3b8Sopenharmony_ci    t(a, aa);
352023dd3b8Sopenharmony_ci    y = a.ln();
353023dd3b8Sopenharmony_ci    t(a, aa);
354023dd3b8Sopenharmony_ci    z = Decimal.ln(a);
355023dd3b8Sopenharmony_ci    t(a, aa);
356023dd3b8Sopenharmony_ci
357023dd3b8Sopenharmony_ci    t(x, y);
358023dd3b8Sopenharmony_ci    t(y, z);
359023dd3b8Sopenharmony_ci
360023dd3b8Sopenharmony_ci    x = a.negated();
361023dd3b8Sopenharmony_ci    t(a, aa);
362023dd3b8Sopenharmony_ci    y = a.neg();
363023dd3b8Sopenharmony_ci    t(a, aa);
364023dd3b8Sopenharmony_ci
365023dd3b8Sopenharmony_ci    t(x, y);
366023dd3b8Sopenharmony_ci
367023dd3b8Sopenharmony_ci    x = a.plus(b);
368023dd3b8Sopenharmony_ci    t(a, aa);
369023dd3b8Sopenharmony_ci    t(b, bb);
370023dd3b8Sopenharmony_ci    y = a.add(b);
371023dd3b8Sopenharmony_ci    t(a, aa);
372023dd3b8Sopenharmony_ci    t(b, bb);
373023dd3b8Sopenharmony_ci    z = Decimal.add(a, b);
374023dd3b8Sopenharmony_ci    t(a, aa);
375023dd3b8Sopenharmony_ci    t(b, bb);
376023dd3b8Sopenharmony_ci
377023dd3b8Sopenharmony_ci    t(x, y);
378023dd3b8Sopenharmony_ci    t(y, z);
379023dd3b8Sopenharmony_ci
380023dd3b8Sopenharmony_ci    x = a.precision();
381023dd3b8Sopenharmony_ci    t(a, aa);
382023dd3b8Sopenharmony_ci    y = a.sd();
383023dd3b8Sopenharmony_ci    t(a, aa);
384023dd3b8Sopenharmony_ci
385023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
386023dd3b8Sopenharmony_ci
387023dd3b8Sopenharmony_ci    x = a.round();
388023dd3b8Sopenharmony_ci    t(a, aa);
389023dd3b8Sopenharmony_ci    y = Decimal.round(a);
390023dd3b8Sopenharmony_ci    t(a, aa);
391023dd3b8Sopenharmony_ci
392023dd3b8Sopenharmony_ci    t(x, y);
393023dd3b8Sopenharmony_ci
394023dd3b8Sopenharmony_ci    x = a.sine();
395023dd3b8Sopenharmony_ci    t(a, aa);
396023dd3b8Sopenharmony_ci    y = a.sin();
397023dd3b8Sopenharmony_ci    t(a, aa);
398023dd3b8Sopenharmony_ci    z = Decimal.sin(a);
399023dd3b8Sopenharmony_ci    t(a, aa);
400023dd3b8Sopenharmony_ci
401023dd3b8Sopenharmony_ci    t(x, y);
402023dd3b8Sopenharmony_ci    t(y, z);
403023dd3b8Sopenharmony_ci
404023dd3b8Sopenharmony_ci    x = a.squareRoot();
405023dd3b8Sopenharmony_ci    t(a, aa);
406023dd3b8Sopenharmony_ci    y = a.sqrt();
407023dd3b8Sopenharmony_ci    t(a, aa);
408023dd3b8Sopenharmony_ci    z = Decimal.sqrt(a);
409023dd3b8Sopenharmony_ci    t(a, aa);
410023dd3b8Sopenharmony_ci
411023dd3b8Sopenharmony_ci    t(x, y);
412023dd3b8Sopenharmony_ci    t(y, z);
413023dd3b8Sopenharmony_ci
414023dd3b8Sopenharmony_ci    x = a.tangent();
415023dd3b8Sopenharmony_ci    t(a, aa);
416023dd3b8Sopenharmony_ci    y = a.tan();
417023dd3b8Sopenharmony_ci    t(a, aa);
418023dd3b8Sopenharmony_ci    z = Decimal.tan(a);
419023dd3b8Sopenharmony_ci    t(a, aa);
420023dd3b8Sopenharmony_ci
421023dd3b8Sopenharmony_ci    t(x, y);
422023dd3b8Sopenharmony_ci    t(y, z);
423023dd3b8Sopenharmony_ci
424023dd3b8Sopenharmony_ci    x = a.times(b);
425023dd3b8Sopenharmony_ci    t(a, aa);
426023dd3b8Sopenharmony_ci    t(b, bb);
427023dd3b8Sopenharmony_ci    y = a.mul(b);
428023dd3b8Sopenharmony_ci    t(a, aa);
429023dd3b8Sopenharmony_ci    t(b, bb);
430023dd3b8Sopenharmony_ci    z = Decimal.mul(a, b);
431023dd3b8Sopenharmony_ci    t(a, aa);
432023dd3b8Sopenharmony_ci    t(b, bb);
433023dd3b8Sopenharmony_ci
434023dd3b8Sopenharmony_ci    t(x, y);
435023dd3b8Sopenharmony_ci    t(y, z);
436023dd3b8Sopenharmony_ci
437023dd3b8Sopenharmony_ci    a.toBinary();
438023dd3b8Sopenharmony_ci    t(a, aa);
439023dd3b8Sopenharmony_ci
440023dd3b8Sopenharmony_ci    x = a.toDecimalPlaces(n);
441023dd3b8Sopenharmony_ci    t(a, aa);
442023dd3b8Sopenharmony_ci    y = a.toDP(n);
443023dd3b8Sopenharmony_ci    t(a, aa);
444023dd3b8Sopenharmony_ci
445023dd3b8Sopenharmony_ci    t(x, y);
446023dd3b8Sopenharmony_ci
447023dd3b8Sopenharmony_ci    a.toExponential(n);
448023dd3b8Sopenharmony_ci    t(a, aa);
449023dd3b8Sopenharmony_ci
450023dd3b8Sopenharmony_ci    a.toFixed(n);
451023dd3b8Sopenharmony_ci    t(a, aa);
452023dd3b8Sopenharmony_ci
453023dd3b8Sopenharmony_ci    a.toFraction();
454023dd3b8Sopenharmony_ci    t(a, aa);
455023dd3b8Sopenharmony_ci
456023dd3b8Sopenharmony_ci    x = a.toHexadecimal();
457023dd3b8Sopenharmony_ci    t(a, aa);
458023dd3b8Sopenharmony_ci    y = a.toHex();
459023dd3b8Sopenharmony_ci    t(a, aa);
460023dd3b8Sopenharmony_ci
461023dd3b8Sopenharmony_ci    T.assertEqual(x, y);
462023dd3b8Sopenharmony_ci
463023dd3b8Sopenharmony_ci    a.toJSON();
464023dd3b8Sopenharmony_ci    t(a, aa);
465023dd3b8Sopenharmony_ci
466023dd3b8Sopenharmony_ci    a.toNearest(b);
467023dd3b8Sopenharmony_ci    t(a, aa);
468023dd3b8Sopenharmony_ci    t(b, bb);
469023dd3b8Sopenharmony_ci
470023dd3b8Sopenharmony_ci    a.toNumber();
471023dd3b8Sopenharmony_ci    t(a, aa);
472023dd3b8Sopenharmony_ci
473023dd3b8Sopenharmony_ci    a.toOctal();
474023dd3b8Sopenharmony_ci    t(a, aa);
475023dd3b8Sopenharmony_ci
476023dd3b8Sopenharmony_ci    x = a.toPower(b);
477023dd3b8Sopenharmony_ci    t(a, aa);
478023dd3b8Sopenharmony_ci    t(b, bb);
479023dd3b8Sopenharmony_ci    y = a.pow(b);
480023dd3b8Sopenharmony_ci    t(a, aa);
481023dd3b8Sopenharmony_ci    t(b, bb);
482023dd3b8Sopenharmony_ci    z = Decimal.pow(a, b);
483023dd3b8Sopenharmony_ci    t(a, aa);
484023dd3b8Sopenharmony_ci    t(b, bb);
485023dd3b8Sopenharmony_ci
486023dd3b8Sopenharmony_ci    t(x, y);
487023dd3b8Sopenharmony_ci    t(y, z);
488023dd3b8Sopenharmony_ci
489023dd3b8Sopenharmony_ci    a.toPrecision(n);
490023dd3b8Sopenharmony_ci    t(a, aa);
491023dd3b8Sopenharmony_ci
492023dd3b8Sopenharmony_ci    x = a.toSignificantDigits(n);
493023dd3b8Sopenharmony_ci    t(a, aa);
494023dd3b8Sopenharmony_ci    y = a.toSD(n);
495023dd3b8Sopenharmony_ci    t(a, aa);
496023dd3b8Sopenharmony_ci
497023dd3b8Sopenharmony_ci    t(x, y);
498023dd3b8Sopenharmony_ci
499023dd3b8Sopenharmony_ci    a.toString();
500023dd3b8Sopenharmony_ci    t(a, aa);
501023dd3b8Sopenharmony_ci
502023dd3b8Sopenharmony_ci    x = a.truncated();
503023dd3b8Sopenharmony_ci    t(a, aa);
504023dd3b8Sopenharmony_ci    y = a.trunc();
505023dd3b8Sopenharmony_ci    t(a, aa);
506023dd3b8Sopenharmony_ci    z = Decimal.trunc(a);
507023dd3b8Sopenharmony_ci    t(a, aa);
508023dd3b8Sopenharmony_ci
509023dd3b8Sopenharmony_ci    t(x, y);
510023dd3b8Sopenharmony_ci    t(y, z);
511023dd3b8Sopenharmony_ci
512023dd3b8Sopenharmony_ci    a.valueOf();
513023dd3b8Sopenharmony_ci    t(a, aa);
514023dd3b8Sopenharmony_ci
515023dd3b8Sopenharmony_ci    Decimal.atan2(a, b);
516023dd3b8Sopenharmony_ci    t(a, aa);
517023dd3b8Sopenharmony_ci    t(b, bb);
518023dd3b8Sopenharmony_ci
519023dd3b8Sopenharmony_ci
520023dd3b8Sopenharmony_ci    Decimal.hypot(a, b);
521023dd3b8Sopenharmony_ci    t(a, aa);
522023dd3b8Sopenharmony_ci    t(b, bb);
523023dd3b8Sopenharmony_ci
524023dd3b8Sopenharmony_ci    x = Decimal.log(a, 10);
525023dd3b8Sopenharmony_ci    t(a, aa);
526023dd3b8Sopenharmony_ci    y = Decimal.log10(a);
527023dd3b8Sopenharmony_ci    t(a, aa);
528023dd3b8Sopenharmony_ci
529023dd3b8Sopenharmony_ci    t(x, y);
530023dd3b8Sopenharmony_ci
531023dd3b8Sopenharmony_ci    x = Decimal.log(a, 2);
532023dd3b8Sopenharmony_ci    t(a, aa);
533023dd3b8Sopenharmony_ci    y = Decimal.log2(a);
534023dd3b8Sopenharmony_ci    t(a, aa);
535023dd3b8Sopenharmony_ci
536023dd3b8Sopenharmony_ci    t(x, y);
537023dd3b8Sopenharmony_ci
538023dd3b8Sopenharmony_ci    Decimal.max(a, b);
539023dd3b8Sopenharmony_ci    t(a, aa);
540023dd3b8Sopenharmony_ci    t(b, bb);
541023dd3b8Sopenharmony_ci
542023dd3b8Sopenharmony_ci    Decimal.min(a, b);
543023dd3b8Sopenharmony_ci    t(a, aa);
544023dd3b8Sopenharmony_ci    t(b, bb);
545023dd3b8Sopenharmony_ci
546023dd3b8Sopenharmony_ci    Decimal.sign(a);
547023dd3b8Sopenharmony_ci    t(a, aa);
548023dd3b8Sopenharmony_ci  }
549023dd3b8Sopenharmony_ci});
550023dd3b8Sopenharmony_ci
551023dd3b8Sopenharmony_ci/*
552023dd3b8Sopenharmony_ci// All methods tested above except:
553023dd3b8Sopenharmony_ciDecimal.clone();
554023dd3b8Sopenharmony_ciDecimal.config();
555023dd3b8Sopenharmony_ciDecimal.noConflict();
556023dd3b8Sopenharmony_ciDecimal.random();
557023dd3b8Sopenharmony_ci*/
558