comparison liboctave/mx-inlines.cc @ 238:780cbbc57b7c

[project @ 1993-11-30 20:23:04 by jwe]
author jwe
date Tue, 30 Nov 1993 20:23:04 +0000
parents 9a4c07481e61
children 00f8b2242a18
comparison
equal deleted inserted replaced
237:5a9e23307fb0 238:780cbbc57b7c
19 along with Octave; see the file COPYING. If not, write to the Free 19 along with Octave; see the file COPYING. If not, write to the Free
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21 21
22 */ 22 */
23 23
24 #ifdef __GNUG__
25 #pragma implementation
26 #endif
27
28 // But first, some helper functions... 24 // But first, some helper functions...
29 25
30 static inline double * 26 static inline double *
31 add (double *d, int len, double s) 27 add (const double *d, int len, double s)
32 { 28 {
33 double *result = 0; 29 double *result = 0;
34 if (len > 0) 30 if (len > 0)
35 { 31 {
36 result = new double [len]; 32 result = new double [len];
39 } 35 }
40 return result; 36 return result;
41 } 37 }
42 38
43 static inline double * 39 static inline double *
44 subtract (double *d, int len, double s) 40 subtract (const double *d, int len, double s)
45 { 41 {
46 double *result = 0; 42 double *result = 0;
47 if (len > 0) 43 if (len > 0)
48 { 44 {
49 result = new double [len]; 45 result = new double [len];
52 } 48 }
53 return result; 49 return result;
54 } 50 }
55 51
56 static inline double * 52 static inline double *
57 subtract (double s, double *d, int len) 53 subtract (double s, const double *d, int len)
58 { 54 {
59 double *result = 0; 55 double *result = 0;
60 if (len > 0) 56 if (len > 0)
61 { 57 {
62 result = new double [len]; 58 result = new double [len];
65 } 61 }
66 return result; 62 return result;
67 } 63 }
68 64
69 static inline double * 65 static inline double *
70 multiply (double *d, int len, double s) 66 multiply (const double *d, int len, double s)
71 { 67 {
72 double *result = 0; 68 double *result = 0;
73 if (len > 0) 69 if (len > 0)
74 { 70 {
75 result = new double [len]; 71 result = new double [len];
78 } 74 }
79 return result; 75 return result;
80 } 76 }
81 77
82 static inline double * 78 static inline double *
83 divide (double *d, int len, double s) 79 divide (const double *d, int len, double s)
84 { 80 {
85 double *result = 0; 81 double *result = 0;
86 if (len > 0) 82 if (len > 0)
87 { 83 {
88 result = new double [len]; 84 result = new double [len];
91 } 87 }
92 return result; 88 return result;
93 } 89 }
94 90
95 static inline double * 91 static inline double *
96 divide (double s, double *d, int len) 92 divide (double s, const double *d, int len)
97 { 93 {
98 double *result = 0; 94 double *result = 0;
99 if (len > 0) 95 if (len > 0)
100 { 96 {
101 result = new double [len]; 97 result = new double [len];
104 } 100 }
105 return result; 101 return result;
106 } 102 }
107 103
108 static inline double * 104 static inline double *
109 add (double *x, double *y, int len) 105 add (const double *x, const double *y, int len)
110 { 106 {
111 double *result = 0; 107 double *result = 0;
112 if (len > 0) 108 if (len > 0)
113 { 109 {
114 result = new double [len]; 110 result = new double [len];
117 } 113 }
118 return result; 114 return result;
119 } 115 }
120 116
121 static inline double * 117 static inline double *
122 subtract (double *x, double *y, int len) 118 subtract (const double *x, const double *y, int len)
123 { 119 {
124 double *result = 0; 120 double *result = 0;
125 if (len > 0) 121 if (len > 0)
126 { 122 {
127 result = new double [len]; 123 result = new double [len];
130 } 126 }
131 return result; 127 return result;
132 } 128 }
133 129
134 static inline double * 130 static inline double *
135 multiply (double *x, double *y, int len) 131 multiply (const double *x, const double *y, int len)
136 { 132 {
137 double *result = 0; 133 double *result = 0;
138 if (len > 0) 134 if (len > 0)
139 { 135 {
140 result = new double [len]; 136 result = new double [len];
143 } 139 }
144 return result; 140 return result;
145 } 141 }
146 142
147 static inline double * 143 static inline double *
148 divide (double *x, double *y, int len) 144 divide (const double *x, const double *y, int len)
149 { 145 {
150 double *result = 0; 146 double *result = 0;
151 if (len > 0) 147 if (len > 0)
152 { 148 {
153 result = new double [len]; 149 result = new double [len];
156 } 152 }
157 return result; 153 return result;
158 } 154 }
159 155
160 static inline double * 156 static inline double *
161 add2 (double *x, double *y, int len) 157 add2 (double *x, const double *y, int len)
162 { 158 {
163 for (int i = 0; i < len; i++) 159 for (int i = 0; i < len; i++)
164 x[i] += y[i]; 160 x[i] += y[i];
165 return x; 161 return x;
166 } 162 }
167 163
168 static inline double * 164 static inline double *
169 subtract2 (double *x, double *y, int len) 165 subtract2 (double *x, const double *y, int len)
170 { 166 {
171 for (int i = 0; i < len; i++) 167 for (int i = 0; i < len; i++)
172 x[i] -= y[i]; 168 x[i] -= y[i];
173 return x; 169 return x;
174 } 170 }
175 171
176 static inline double * 172 static inline double *
177 negate (double *d, int len) 173 negate (const double *d, int len)
178 { 174 {
179 double *result = 0; 175 double *result = 0;
180 if (len > 0) 176 if (len > 0)
181 { 177 {
182 result = new double [len]; 178 result = new double [len];
192 for (int i = 0; i < len; i++) 188 for (int i = 0; i < len; i++)
193 d[i] = s; 189 d[i] = s;
194 } 190 }
195 191
196 static inline void 192 static inline void
197 copy (double *x, double *y, int len) 193 copy (double *x, const double *y, int len)
198 { 194 {
199 for (int i = 0; i < len; i++) 195 for (int i = 0; i < len; i++)
200 x[i] = y[i]; 196 x[i] = y[i];
201 } 197 }
202 198
203 static inline double * 199 static inline double *
204 dup (double *x, int len) 200 dup (const double *x, int len)
205 { 201 {
206 double *retval = (double *) NULL; 202 double *retval = 0;
207 if (len > 0) 203 if (len > 0)
208 { 204 {
209 retval = new double [len]; 205 retval = new double [len];
210 for (int i = 0; i < len; i++) 206 for (int i = 0; i < len; i++)
211 retval[i] = x[i]; 207 retval[i] = x[i];
212 } 208 }
213 return retval; 209 return retval;
214 } 210 }
215 211
216 static inline int 212 static inline int
217 equal (double *x, double *y, int len) 213 equal (const double *x, const double *y, int len)
218 { 214 {
219 for (int i = 0; i < len; i++) 215 for (int i = 0; i < len; i++)
220 if (x[i] != y[i]) 216 if (x[i] != y[i])
221 return 0; 217 return 0;
222 return 1; 218 return 1;
223 } 219 }
224 220
225 // And some for Complex too... 221 // And some for Complex too...
226 222
227 static inline Complex * 223 static inline Complex *
228 add (Complex *d, int len, Complex s) 224 add (const Complex *d, int len, Complex s)
229 { 225 {
230 Complex *result = 0; 226 Complex *result = 0;
231 if (len > 0) 227 if (len > 0)
232 { 228 {
233 result = new Complex [len]; 229 result = new Complex [len];
236 } 232 }
237 return result; 233 return result;
238 } 234 }
239 235
240 static inline Complex * 236 static inline Complex *
241 add (Complex s, Complex *d, int len) 237 add (Complex s, const Complex *d, int len)
242 { 238 {
243 Complex *result = 0; 239 Complex *result = 0;
244 if (len > 0) 240 if (len > 0)
245 { 241 {
246 result = new Complex [len]; 242 result = new Complex [len];
249 } 245 }
250 return result; 246 return result;
251 } 247 }
252 248
253 static inline Complex * 249 static inline Complex *
254 subtract (Complex *d, int len, Complex s) 250 subtract (const Complex *d, int len, Complex s)
255 { 251 {
256 Complex *result = 0; 252 Complex *result = 0;
257 if (len > 0) 253 if (len > 0)
258 { 254 {
259 result = new Complex [len]; 255 result = new Complex [len];
262 } 258 }
263 return result; 259 return result;
264 } 260 }
265 261
266 static inline Complex * 262 static inline Complex *
267 subtract (Complex s, Complex *d, int len) 263 subtract (Complex s, const Complex *d, int len)
268 { 264 {
269 Complex *result = 0; 265 Complex *result = 0;
270 if (len > 0) 266 if (len > 0)
271 { 267 {
272 result = new Complex [len]; 268 result = new Complex [len];
275 } 271 }
276 return result; 272 return result;
277 } 273 }
278 274
279 static inline Complex * 275 static inline Complex *
280 multiply (Complex *d, int len, Complex s) 276 multiply (const Complex *d, int len, Complex s)
281 { 277 {
282 Complex *result = 0; 278 Complex *result = 0;
283 if (len > 0) 279 if (len > 0)
284 { 280 {
285 result = new Complex [len]; 281 result = new Complex [len];
288 } 284 }
289 return result; 285 return result;
290 } 286 }
291 287
292 static inline Complex * 288 static inline Complex *
293 multiply (Complex s, Complex *d, int len) 289 multiply (Complex s, const Complex *d, int len)
294 { 290 {
295 Complex *result = 0; 291 Complex *result = 0;
296 if (len > 0) 292 if (len > 0)
297 { 293 {
298 result = new Complex [len]; 294 result = new Complex [len];
301 } 297 }
302 return result; 298 return result;
303 } 299 }
304 300
305 static inline Complex * 301 static inline Complex *
306 divide (Complex *d, int len, Complex s) 302 divide (const Complex *d, int len, Complex s)
307 { 303 {
308 Complex *result = 0; 304 Complex *result = 0;
309 if (len > 0) 305 if (len > 0)
310 { 306 {
311 result = new Complex [len]; 307 result = new Complex [len];
314 } 310 }
315 return result; 311 return result;
316 } 312 }
317 313
318 static inline Complex * 314 static inline Complex *
319 divide (Complex s, Complex *d, int len) 315 divide (Complex s, const Complex *d, int len)
320 { 316 {
321 Complex *result = 0; 317 Complex *result = 0;
322 if (len > 0) 318 if (len > 0)
323 { 319 {
324 result = new Complex [len]; 320 result = new Complex [len];
327 } 323 }
328 return result; 324 return result;
329 } 325 }
330 326
331 static inline Complex * 327 static inline Complex *
332 add (Complex *x, Complex *y, int len) 328 add (const Complex *x, const Complex *y, int len)
333 { 329 {
334 Complex *result = 0; 330 Complex *result = 0;
335 if (len > 0) 331 if (len > 0)
336 { 332 {
337 result = new Complex [len]; 333 result = new Complex [len];
340 } 336 }
341 return result; 337 return result;
342 } 338 }
343 339
344 static inline Complex * 340 static inline Complex *
345 subtract (Complex *x, Complex *y, int len) 341 subtract (const Complex *x, const Complex *y, int len)
346 { 342 {
347 Complex *result = 0; 343 Complex *result = 0;
348 if (len > 0) 344 if (len > 0)
349 { 345 {
350 result = new Complex [len]; 346 result = new Complex [len];
353 } 349 }
354 return result; 350 return result;
355 } 351 }
356 352
357 static inline Complex * 353 static inline Complex *
358 multiply (Complex *x, Complex *y, int len) 354 multiply (const Complex *x, const Complex *y, int len)
359 { 355 {
360 Complex *result = 0; 356 Complex *result = 0;
361 if (len > 0) 357 if (len > 0)
362 { 358 {
363 result = new Complex [len]; 359 result = new Complex [len];
366 } 362 }
367 return result; 363 return result;
368 } 364 }
369 365
370 static inline Complex * 366 static inline Complex *
371 divide (Complex *x, Complex *y, int len) 367 divide (const Complex *x, const Complex *y, int len)
372 { 368 {
373 Complex *result = 0; 369 Complex *result = 0;
374 if (len > 0) 370 if (len > 0)
375 { 371 {
376 result = new Complex [len]; 372 result = new Complex [len];
379 } 375 }
380 return result; 376 return result;
381 } 377 }
382 378
383 static inline Complex * 379 static inline Complex *
384 add2 (Complex *x, Complex *y, int len) 380 add2 (Complex *x, const Complex *y, int len)
385 { 381 {
386 for (int i = 0; i < len; i++) 382 for (int i = 0; i < len; i++)
387 x[i] += y[i]; 383 x[i] += y[i];
388 return x; 384 return x;
389 } 385 }
390 386
391 static inline Complex * 387 static inline Complex *
392 subtract2 (Complex *x, Complex *y, int len) 388 subtract2 (Complex *x, const Complex *y, int len)
393 { 389 {
394 for (int i = 0; i < len; i++) 390 for (int i = 0; i < len; i++)
395 x[i] -= y[i]; 391 x[i] -= y[i];
396 return x; 392 return x;
397 } 393 }
398 394
399 static inline Complex * 395 static inline Complex *
400 negate (Complex *d, int len) 396 negate (const Complex *d, int len)
401 { 397 {
402 Complex *result = 0; 398 Complex *result = 0;
403 if (len > 0) 399 if (len > 0)
404 { 400 {
405 result = new Complex [len]; 401 result = new Complex [len];
408 } 404 }
409 return result; 405 return result;
410 } 406 }
411 407
412 static inline double * 408 static inline double *
413 not (Complex *d, int len) 409 not (const Complex *d, int len)
414 { 410 {
415 double *result = 0; 411 double *result = 0;
416 if (len > 0) 412 if (len > 0)
417 { 413 {
418 result = new double [len]; 414 result = new double [len];
428 for (int i = 0; i < len; i++) 424 for (int i = 0; i < len; i++)
429 d[i] = s; 425 d[i] = s;
430 } 426 }
431 427
432 static inline void 428 static inline void
433 copy (Complex *x, Complex *y, int len) 429 copy (Complex *x, const Complex *y, int len)
434 { 430 {
435 for (int i = 0; i < len; i++) 431 for (int i = 0; i < len; i++)
436 x[i] = y[i]; 432 x[i] = y[i];
437 } 433 }
438 434
439 static inline Complex * 435 static inline Complex *
440 dup (Complex *x, int len) 436 dup (const Complex *x, int len)
441 { 437 {
442 Complex *retval = (Complex *) NULL; 438 Complex *retval = 0;
443 if (len > 0) 439 if (len > 0)
444 { 440 {
445 retval = new Complex [len]; 441 retval = new Complex [len];
446 for (int i = 0; i < len; i++) 442 for (int i = 0; i < len; i++)
447 retval[i] = x[i]; 443 retval[i] = x[i];
448 } 444 }
449 return retval; 445 return retval;
450 } 446 }
451 447
452 static inline Complex * 448 static inline Complex *
453 make_complex (double *x, int len) 449 make_complex (const double *x, int len)
454 { 450 {
455 Complex *retval = (Complex *) NULL; 451 Complex *retval = 0;
456 if (len > 0) 452 if (len > 0)
457 { 453 {
458 retval = new Complex [len]; 454 retval = new Complex [len];
459 for (int i = 0; i < len; i++) 455 for (int i = 0; i < len; i++)
460 retval[i] = x[i]; 456 retval[i] = x[i];
461 } 457 }
462 return retval; 458 return retval;
463 } 459 }
464 460
465 static inline Complex * 461 static inline Complex *
466 conj_dup (Complex *x, int len) 462 conj_dup (const Complex *x, int len)
467 { 463 {
468 Complex *retval = (Complex *) NULL; 464 Complex *retval = 0;
469 if (len > 0) 465 if (len > 0)
470 { 466 {
471 retval = new Complex [len]; 467 retval = new Complex [len];
472 for (int i = 0; i < len; i++) 468 for (int i = 0; i < len; i++)
473 retval[i] = conj (x[i]); 469 retval[i] = conj (x[i]);
474 } 470 }
475 return retval; 471 return retval;
476 } 472 }
477 473
478 static inline double * 474 static inline double *
479 real_dup (Complex *x, int len) 475 real_dup (const Complex *x, int len)
480 { 476 {
481 double *retval = (double *) NULL; 477 double *retval = 0;
482 if (len > 0) 478 if (len > 0)
483 { 479 {
484 retval = new double [len]; 480 retval = new double [len];
485 for (int i = 0; i < len; i++) 481 for (int i = 0; i < len; i++)
486 retval[i] = real (x[i]); 482 retval[i] = real (x[i]);
487 } 483 }
488 return retval; 484 return retval;
489 } 485 }
490 486
491 static inline double * 487 static inline double *
492 imag_dup (Complex *x, int len) 488 imag_dup (const Complex *x, int len)
493 { 489 {
494 double *retval = (double *) NULL; 490 double *retval = 0;
495 if (len > 0) 491 if (len > 0)
496 { 492 {
497 retval = new double [len]; 493 retval = new double [len];
498 for (int i = 0; i < len; i++) 494 for (int i = 0; i < len; i++)
499 retval[i] = imag (x[i]); 495 retval[i] = imag (x[i]);
500 } 496 }
501 return retval; 497 return retval;
502 } 498 }
503 499
504 static inline int 500 static inline int
505 equal (Complex *x, Complex *y, int len) 501 equal (const Complex *x, const Complex *y, int len)
506 { 502 {
507 for (int i = 0; i < len; i++) 503 for (int i = 0; i < len; i++)
508 if (x[i] != y[i]) 504 if (x[i] != y[i])
509 return 0; 505 return 0;
510 return 1; 506 return 1;
511 } 507 }
512 508
513 // And still some more for mixed Complex/double operations... 509 // And still some more for mixed Complex/double operations...
514 510
515 static inline Complex * 511 static inline Complex *
516 add (Complex *d, int len, double s) 512 add (const Complex *d, int len, double s)
517 { 513 {
518 Complex *result = 0; 514 Complex *result = 0;
519 if (len > 0) 515 if (len > 0)
520 { 516 {
521 result = new Complex [len]; 517 result = new Complex [len];
524 } 520 }
525 return result; 521 return result;
526 } 522 }
527 523
528 static inline Complex * 524 static inline Complex *
529 add (double *d, int len, Complex s) 525 add (const double *d, int len, Complex s)
530 { 526 {
531 Complex *result = 0; 527 Complex *result = 0;
532 if (len > 0) 528 if (len > 0)
533 { 529 {
534 result = new Complex [len]; 530 result = new Complex [len];
537 } 533 }
538 return result; 534 return result;
539 } 535 }
540 536
541 static inline Complex * 537 static inline Complex *
542 add (double s, Complex *d, int len) 538 add (double s, const Complex *d, int len)
543 { 539 {
544 Complex *result = 0; 540 Complex *result = 0;
545 if (len > 0) 541 if (len > 0)
546 { 542 {
547 result = new Complex [len]; 543 result = new Complex [len];
550 } 546 }
551 return result; 547 return result;
552 } 548 }
553 549
554 static inline Complex * 550 static inline Complex *
555 add (Complex s, double *d, int len) 551 add (Complex s, const double *d, int len)
556 { 552 {
557 Complex *result = 0; 553 Complex *result = 0;
558 if (len > 0) 554 if (len > 0)
559 { 555 {
560 result = new Complex [len]; 556 result = new Complex [len];
563 } 559 }
564 return result; 560 return result;
565 } 561 }
566 562
567 static inline Complex * 563 static inline Complex *
568 subtract (Complex *d, int len, double s) 564 subtract (const Complex *d, int len, double s)
569 { 565 {
570 Complex *result = 0; 566 Complex *result = 0;
571 if (len > 0) 567 if (len > 0)
572 { 568 {
573 result = new Complex [len]; 569 result = new Complex [len];
576 } 572 }
577 return result; 573 return result;
578 } 574 }
579 575
580 static inline Complex * 576 static inline Complex *
581 subtract (double *d, int len, Complex s) 577 subtract (const double *d, int len, Complex s)
582 { 578 {
583 Complex *result = 0; 579 Complex *result = 0;
584 if (len > 0) 580 if (len > 0)
585 { 581 {
586 result = new Complex [len]; 582 result = new Complex [len];
589 } 585 }
590 return result; 586 return result;
591 } 587 }
592 588
593 static inline Complex * 589 static inline Complex *
594 subtract (double s, Complex *d, int len) 590 subtract (double s, const Complex *d, int len)
595 { 591 {
596 Complex *result = 0; 592 Complex *result = 0;
597 if (len > 0) 593 if (len > 0)
598 { 594 {
599 result = new Complex [len]; 595 result = new Complex [len];
602 } 598 }
603 return result; 599 return result;
604 } 600 }
605 601
606 static inline Complex * 602 static inline Complex *
607 subtract (Complex s, double *d, int len) 603 subtract (Complex s, const double *d, int len)
608 { 604 {
609 Complex *result = 0; 605 Complex *result = 0;
610 if (len > 0) 606 if (len > 0)
611 { 607 {
612 result = new Complex [len]; 608 result = new Complex [len];
615 } 611 }
616 return result; 612 return result;
617 } 613 }
618 614
619 static inline Complex * 615 static inline Complex *
620 multiply (Complex *d, int len, double s) 616 multiply (const Complex *d, int len, double s)
621 { 617 {
622 Complex *result = 0; 618 Complex *result = 0;
623 if (len > 0) 619 if (len > 0)
624 { 620 {
625 result = new Complex [len]; 621 result = new Complex [len];
628 } 624 }
629 return result; 625 return result;
630 } 626 }
631 627
632 static inline Complex * 628 static inline Complex *
633 multiply (double *d, int len, Complex s) 629 multiply (const double *d, int len, Complex s)
634 { 630 {
635 Complex *result = 0; 631 Complex *result = 0;
636 if (len > 0) 632 if (len > 0)
637 { 633 {
638 result = new Complex [len]; 634 result = new Complex [len];
641 } 637 }
642 return result; 638 return result;
643 } 639 }
644 640
645 static inline Complex * 641 static inline Complex *
646 divide (Complex *d, int len, double s) 642 divide (const Complex *d, int len, double s)
647 { 643 {
648 Complex *result = 0; 644 Complex *result = 0;
649 if (len > 0) 645 if (len > 0)
650 { 646 {
651 result = new Complex [len]; 647 result = new Complex [len];
654 } 650 }
655 return result; 651 return result;
656 } 652 }
657 653
658 static inline Complex * 654 static inline Complex *
659 divide (double *d, int len, Complex s) 655 divide (const double *d, int len, Complex s)
660 { 656 {
661 Complex *result = 0; 657 Complex *result = 0;
662 if (len > 0) 658 if (len > 0)
663 { 659 {
664 result = new Complex [len]; 660 result = new Complex [len];
667 } 663 }
668 return result; 664 return result;
669 } 665 }
670 666
671 static inline Complex * 667 static inline Complex *
672 divide (double s, Complex *d, int len) 668 divide (double s, const Complex *d, int len)
673 { 669 {
674 Complex *result = 0; 670 Complex *result = 0;
675 if (len > 0) 671 if (len > 0)
676 { 672 {
677 result = new Complex [len]; 673 result = new Complex [len];
680 } 676 }
681 return result; 677 return result;
682 } 678 }
683 679
684 static inline Complex * 680 static inline Complex *
685 divide (Complex s, double *d, int len) 681 divide (Complex s, const double *d, int len)
686 { 682 {
687 Complex *result = 0; 683 Complex *result = 0;
688 if (len > 0) 684 if (len > 0)
689 { 685 {
690 result = new Complex [len]; 686 result = new Complex [len];
693 } 689 }
694 return result; 690 return result;
695 } 691 }
696 692
697 static inline Complex * 693 static inline Complex *
698 add (Complex *x, double *y, int len) 694 add (const Complex *x, const double *y, int len)
699 { 695 {
700 Complex *result = 0; 696 Complex *result = 0;
701 if (len > 0) 697 if (len > 0)
702 { 698 {
703 result = new Complex [len]; 699 result = new Complex [len];
706 } 702 }
707 return result; 703 return result;
708 } 704 }
709 705
710 static inline Complex * 706 static inline Complex *
711 add (double *x, Complex *y, int len) 707 add (const double *x, const Complex *y, int len)
712 { 708 {
713 Complex *result = 0; 709 Complex *result = 0;
714 if (len > 0) 710 if (len > 0)
715 { 711 {
716 result = new Complex [len]; 712 result = new Complex [len];
719 } 715 }
720 return result; 716 return result;
721 } 717 }
722 718
723 static inline Complex * 719 static inline Complex *
724 subtract (Complex *x, double *y, int len) 720 subtract (const Complex *x, const double *y, int len)
725 { 721 {
726 Complex *result = 0; 722 Complex *result = 0;
727 if (len > 0) 723 if (len > 0)
728 { 724 {
729 result = new Complex [len]; 725 result = new Complex [len];
732 } 728 }
733 return result; 729 return result;
734 } 730 }
735 731
736 static inline Complex * 732 static inline Complex *
737 subtract (double *x, Complex *y, int len) 733 subtract (const double *x, const Complex *y, int len)
738 { 734 {
739 Complex *result = 0; 735 Complex *result = 0;
740 if (len > 0) 736 if (len > 0)
741 { 737 {
742 result = new Complex [len]; 738 result = new Complex [len];
745 } 741 }
746 return result; 742 return result;
747 } 743 }
748 744
749 static inline Complex * 745 static inline Complex *
750 multiply (Complex *x, double *y, int len) 746 multiply (const Complex *x, const double *y, int len)
751 { 747 {
752 Complex *result = 0; 748 Complex *result = 0;
753 if (len > 0) 749 if (len > 0)
754 { 750 {
755 result = new Complex [len]; 751 result = new Complex [len];
758 } 754 }
759 return result; 755 return result;
760 } 756 }
761 757
762 static inline Complex * 758 static inline Complex *
763 multiply (double *x, Complex *y, int len) 759 multiply (const double *x, const Complex *y, int len)
764 { 760 {
765 Complex *result = 0; 761 Complex *result = 0;
766 if (len > 0) 762 if (len > 0)
767 { 763 {
768 result = new Complex [len]; 764 result = new Complex [len];
771 } 767 }
772 return result; 768 return result;
773 } 769 }
774 770
775 static inline Complex * 771 static inline Complex *
776 divide (Complex *x, double *y, int len) 772 divide (const Complex *x, const double *y, int len)
777 { 773 {
778 Complex *result = 0; 774 Complex *result = 0;
779 if (len > 0) 775 if (len > 0)
780 { 776 {
781 result = new Complex [len]; 777 result = new Complex [len];
784 } 780 }
785 return result; 781 return result;
786 } 782 }
787 783
788 static inline Complex * 784 static inline Complex *
789 divide (double *x, Complex *y, int len) 785 divide (const double *x, const Complex *y, int len)
790 { 786 {
791 Complex *result = 0; 787 Complex *result = 0;
792 if (len > 0) 788 if (len > 0)
793 { 789 {
794 result = new Complex [len]; 790 result = new Complex [len];
797 } 793 }
798 return result; 794 return result;
799 } 795 }
800 796
801 static inline Complex * 797 static inline Complex *
802 add2 (Complex *x, double *y, int len) 798 add2 (Complex *x, const double *y, int len)
803 { 799 {
804 for (int i = 0; i < len; i++) 800 for (int i = 0; i < len; i++)
805 x[i] += y[i]; 801 x[i] += y[i];
806 return x; 802 return x;
807 } 803 }
808 804
809 static inline Complex * 805 static inline Complex *
810 subtract2 (Complex *x, double *y, int len) 806 subtract2 (Complex *x, const double *y, int len)
811 { 807 {
812 for (int i = 0; i < len; i++) 808 for (int i = 0; i < len; i++)
813 x[i] -= y[i]; 809 x[i] -= y[i];
814 return x; 810 return x;
815 } 811 }
820 for (int i = 0; i < len; i++) 816 for (int i = 0; i < len; i++)
821 d[i] = s; 817 d[i] = s;
822 } 818 }
823 819
824 static inline void 820 static inline void
825 copy (Complex *x, double *y, int len) 821 copy (Complex *x, const double *y, int len)
826 { 822 {
827 for (int i = 0; i < len; i++) 823 for (int i = 0; i < len; i++)
828 x[i] = y[i]; 824 x[i] = y[i];
829 } 825 }
830 826