1Ops(3) User Contributed Perl Documentation Ops(3)
2
3
4
6 PDL::Ops - Fundamental mathematical operators
7
9 This module provides the functions used by PDL to overload the basic
10 mathematical operators ("+ - / *" etc.) and functions ("sin sqrt" etc.)
11
12 It also includes the function "log10", which should be a perl function
13 so that we can overload it!
14
15 Matrix multiplication (the operator "x") is handled by the module
16 PDL::Primitive.
17
19 none
20
22 plus
23 Signature: (a(); b(); [o]c(); int $swap)
24
25 add two ndarrays
26
27 $c = $x + $y; # overloaded call
28 $c = plus $x, $y; # explicit call with default swap of 0
29 $c = plus $x, $y, 1; # explicit call with trailing 1 to swap args
30 $x->inplace->plus($y); # modify $x inplace
31
32 It can be made to work inplace with the "$x->inplace" syntax. This
33 function is used to overload the binary "+" operator. As of 2.065,
34 when calling this function explicitly you can omit the third argument
35 (see second example), or supply it (see third one).
36
37 plus processes bad values. It will set the bad-value flag of all
38 output ndarrays if the flag is set for any of the input ndarrays.
39
40 mult
41 Signature: (a(); b(); [o]c(); int $swap)
42
43 multiply two ndarrays
44
45 $c = $x * $y; # overloaded call
46 $c = mult $x, $y; # explicit call with default swap of 0
47 $c = mult $x, $y, 1; # explicit call with trailing 1 to swap args
48 $x->inplace->mult($y); # modify $x inplace
49
50 It can be made to work inplace with the "$x->inplace" syntax. This
51 function is used to overload the binary "*" operator. As of 2.065,
52 when calling this function explicitly you can omit the third argument
53 (see second example), or supply it (see third one).
54
55 mult processes bad values. It will set the bad-value flag of all
56 output ndarrays if the flag is set for any of the input ndarrays.
57
58 minus
59 Signature: (a(); b(); [o]c(); int $swap)
60
61 subtract two ndarrays
62
63 $c = $x - $y; # overloaded call
64 $c = minus $x, $y; # explicit call with default swap of 0
65 $c = minus $x, $y, 1; # explicit call with trailing 1 to swap args
66 $x->inplace->minus($y); # modify $x inplace
67
68 It can be made to work inplace with the "$x->inplace" syntax. This
69 function is used to overload the binary "-" operator. As of 2.065,
70 when calling this function explicitly you can omit the third argument
71 (see second example), or supply it (see third one).
72
73 minus processes bad values. It will set the bad-value flag of all
74 output ndarrays if the flag is set for any of the input ndarrays.
75
76 divide
77 Signature: (a(); b(); [o]c(); int $swap)
78
79 divide two ndarrays
80
81 $c = $x / $y; # overloaded call
82 $c = divide $x, $y; # explicit call with default swap of 0
83 $c = divide $x, $y, 1; # explicit call with trailing 1 to swap args
84 $x->inplace->divide($y); # modify $x inplace
85
86 It can be made to work inplace with the "$x->inplace" syntax. This
87 function is used to overload the binary "/" operator. As of 2.065,
88 when calling this function explicitly you can omit the third argument
89 (see second example), or supply it (see third one).
90
91 divide processes bad values. It will set the bad-value flag of all
92 output ndarrays if the flag is set for any of the input ndarrays.
93
94 gt
95 Signature: (a(); b(); [o]c(); int $swap)
96
97 the binary > (greater than) operation
98
99 $c = $x > $y; # overloaded call
100 $c = gt $x, $y; # explicit call with default swap of 0
101 $c = gt $x, $y, 1; # explicit call with trailing 1 to swap args
102 $x->inplace->gt($y); # modify $x inplace
103
104 It can be made to work inplace with the "$x->inplace" syntax. This
105 function is used to overload the binary ">" operator. As of 2.065,
106 when calling this function explicitly you can omit the third argument
107 (see second example), or supply it (see third one).
108
109 gt processes bad values. It will set the bad-value flag of all output
110 ndarrays if the flag is set for any of the input ndarrays.
111
112 lt
113 Signature: (a(); b(); [o]c(); int $swap)
114
115 the binary < (less than) operation
116
117 $c = $x < $y; # overloaded call
118 $c = lt $x, $y; # explicit call with default swap of 0
119 $c = lt $x, $y, 1; # explicit call with trailing 1 to swap args
120 $x->inplace->lt($y); # modify $x inplace
121
122 It can be made to work inplace with the "$x->inplace" syntax. This
123 function is used to overload the binary "<" operator. As of 2.065,
124 when calling this function explicitly you can omit the third argument
125 (see second example), or supply it (see third one).
126
127 lt processes bad values. It will set the bad-value flag of all output
128 ndarrays if the flag is set for any of the input ndarrays.
129
130 le
131 Signature: (a(); b(); [o]c(); int $swap)
132
133 the binary <= (less equal) operation
134
135 $c = $x <= $y; # overloaded call
136 $c = le $x, $y; # explicit call with default swap of 0
137 $c = le $x, $y, 1; # explicit call with trailing 1 to swap args
138 $x->inplace->le($y); # modify $x inplace
139
140 It can be made to work inplace with the "$x->inplace" syntax. This
141 function is used to overload the binary "<=" operator. As of 2.065,
142 when calling this function explicitly you can omit the third argument
143 (see second example), or supply it (see third one).
144
145 le processes bad values. It will set the bad-value flag of all output
146 ndarrays if the flag is set for any of the input ndarrays.
147
148 ge
149 Signature: (a(); b(); [o]c(); int $swap)
150
151 the binary >= (greater equal) operation
152
153 $c = $x >= $y; # overloaded call
154 $c = ge $x, $y; # explicit call with default swap of 0
155 $c = ge $x, $y, 1; # explicit call with trailing 1 to swap args
156 $x->inplace->ge($y); # modify $x inplace
157
158 It can be made to work inplace with the "$x->inplace" syntax. This
159 function is used to overload the binary ">=" operator. As of 2.065,
160 when calling this function explicitly you can omit the third argument
161 (see second example), or supply it (see third one).
162
163 ge processes bad values. It will set the bad-value flag of all output
164 ndarrays if the flag is set for any of the input ndarrays.
165
166 eq
167 Signature: (a(); b(); [o]c(); int $swap)
168
169 binary equal to operation ("==")
170
171 $c = $x == $y; # overloaded call
172 $c = eq $x, $y; # explicit call with default swap of 0
173 $c = eq $x, $y, 1; # explicit call with trailing 1 to swap args
174 $x->inplace->eq($y); # modify $x inplace
175
176 It can be made to work inplace with the "$x->inplace" syntax. This
177 function is used to overload the binary "==" operator. As of 2.065,
178 when calling this function explicitly you can omit the third argument
179 (see second example), or supply it (see third one).
180
181 eq processes bad values. It will set the bad-value flag of all output
182 ndarrays if the flag is set for any of the input ndarrays.
183
184 ne
185 Signature: (a(); b(); [o]c(); int $swap)
186
187 binary not equal to operation ("!=")
188
189 $c = $x != $y; # overloaded call
190 $c = ne $x, $y; # explicit call with default swap of 0
191 $c = ne $x, $y, 1; # explicit call with trailing 1 to swap args
192 $x->inplace->ne($y); # modify $x inplace
193
194 It can be made to work inplace with the "$x->inplace" syntax. This
195 function is used to overload the binary "!=" operator. As of 2.065,
196 when calling this function explicitly you can omit the third argument
197 (see second example), or supply it (see third one).
198
199 ne processes bad values. It will set the bad-value flag of all output
200 ndarrays if the flag is set for any of the input ndarrays.
201
202 shiftleft
203 Signature: (a(); b(); [o]c(); int $swap)
204
205 leftshift $a by $b
206
207 $c = $x << $y; # overloaded call
208 $c = shiftleft $x, $y; # explicit call with default swap of 0
209 $c = shiftleft $x, $y, 1; # explicit call with trailing 1 to swap args
210 $x->inplace->shiftleft($y); # modify $x inplace
211
212 It can be made to work inplace with the "$x->inplace" syntax. This
213 function is used to overload the binary "<<" operator. As of 2.065,
214 when calling this function explicitly you can omit the third argument
215 (see second example), or supply it (see third one).
216
217 shiftleft processes bad values. It will set the bad-value flag of all
218 output ndarrays if the flag is set for any of the input ndarrays.
219
220 shiftright
221 Signature: (a(); b(); [o]c(); int $swap)
222
223 rightshift $a by $b
224
225 $c = $x >> $y; # overloaded call
226 $c = shiftright $x, $y; # explicit call with default swap of 0
227 $c = shiftright $x, $y, 1; # explicit call with trailing 1 to swap args
228 $x->inplace->shiftright($y); # modify $x inplace
229
230 It can be made to work inplace with the "$x->inplace" syntax. This
231 function is used to overload the binary ">>" operator. As of 2.065,
232 when calling this function explicitly you can omit the third argument
233 (see second example), or supply it (see third one).
234
235 shiftright processes bad values. It will set the bad-value flag of all
236 output ndarrays if the flag is set for any of the input ndarrays.
237
238 or2
239 Signature: (a(); b(); [o]c(); int $swap; SV *$ign; int $ign2)
240
241 binary or of two ndarrays
242
243 $c = $x | $y; # overloaded call
244 $c = or2 $x, $y; # explicit call with default swap of 0
245 $c = or2 $x, $y, 1; # explicit call with trailing 1 to swap args
246 $x->inplace->or2($y); # modify $x inplace
247
248 It can be made to work inplace with the "$x->inplace" syntax. This
249 function is used to overload the binary "|" operator. As of 2.065,
250 when calling this function explicitly you can omit the third argument
251 (see second example), or supply it (see third one).
252
253 or2 processes bad values. It will set the bad-value flag of all output
254 ndarrays if the flag is set for any of the input ndarrays.
255
256 and2
257 Signature: (a(); b(); [o]c(); int $swap; SV *$ign; int $ign2)
258
259 binary and of two ndarrays
260
261 $c = $x & $y; # overloaded call
262 $c = and2 $x, $y; # explicit call with default swap of 0
263 $c = and2 $x, $y, 1; # explicit call with trailing 1 to swap args
264 $x->inplace->and2($y); # modify $x inplace
265
266 It can be made to work inplace with the "$x->inplace" syntax. This
267 function is used to overload the binary "&" operator. As of 2.065,
268 when calling this function explicitly you can omit the third argument
269 (see second example), or supply it (see third one).
270
271 and2 processes bad values. It will set the bad-value flag of all
272 output ndarrays if the flag is set for any of the input ndarrays.
273
274 xor
275 Signature: (a(); b(); [o]c(); int $swap; SV *$ign; int $ign2)
276
277 binary exclusive or of two ndarrays
278
279 $c = $x ^ $y; # overloaded call
280 $c = xor $x, $y; # explicit call with default swap of 0
281 $c = xor $x, $y, 1; # explicit call with trailing 1 to swap args
282 $x->inplace->xor($y); # modify $x inplace
283
284 It can be made to work inplace with the "$x->inplace" syntax. This
285 function is used to overload the binary "^" operator. As of 2.065,
286 when calling this function explicitly you can omit the third argument
287 (see second example), or supply it (see third one).
288
289 xor processes bad values. It will set the bad-value flag of all output
290 ndarrays if the flag is set for any of the input ndarrays.
291
292 bitnot
293 Signature: (a(); [o]b())
294
295 unary bit negation
296
297 $y = ~ $x;
298 $x->inplace->bitnot; # modify $x inplace
299
300 It can be made to work inplace with the "$x->inplace" syntax. This
301 function is used to overload the unary "~" operator/function.
302
303 bitnot processes bad values. It will set the bad-value flag of all
304 output ndarrays if the flag is set for any of the input ndarrays.
305
306 power
307 Signature: (a(); b(); [o]c(); int $swap)
308
309 raise ndarray $a to the power $b
310
311 $c = $x->power($y); # explicit call with default swap of 0
312 $c = $x->power($y, 1); # explicit call with trailing 1 to swap args
313 $c = $a ** $b; # overloaded use
314 $x->inplace->power($y,0); # modify $x inplace
315
316 It can be made to work inplace with the "$x->inplace" syntax. This
317 function is used to overload the binary "**" function. As of 2.065,
318 when calling this function explicitly you can omit the third argument
319 (see first example), or supply it (see second one).
320
321 power processes bad values. It will set the bad-value flag of all
322 output ndarrays if the flag is set for any of the input ndarrays.
323
324 atan2
325 Signature: (a(); b(); [o]c(); int $swap)
326
327 elementwise "atan2" of two ndarrays
328
329 $c = $x->atan2($y); # explicit call with default swap of 0
330 $c = $x->atan2($y, 1); # explicit call with trailing 1 to swap args
331 $c = atan2 $a, $b; # overloaded use
332 $x->inplace->atan2($y,0); # modify $x inplace
333
334 It can be made to work inplace with the "$x->inplace" syntax. This
335 function is used to overload the binary "atan2" function. As of 2.065,
336 when calling this function explicitly you can omit the third argument
337 (see first example), or supply it (see second one).
338
339 atan2 processes bad values. It will set the bad-value flag of all
340 output ndarrays if the flag is set for any of the input ndarrays.
341
342 modulo
343 Signature: (a(); b(); [o]c(); int $swap)
344
345 elementwise "modulo" operation
346
347 $c = $x->modulo($y); # explicit call with default swap of 0
348 $c = $x->modulo($y, 1); # explicit call with trailing 1 to swap args
349 $c = $a % $b; # overloaded use
350 $x->inplace->modulo($y,0); # modify $x inplace
351
352 It can be made to work inplace with the "$x->inplace" syntax. This
353 function is used to overload the binary "%" function. As of 2.065,
354 when calling this function explicitly you can omit the third argument
355 (see first example), or supply it (see second one).
356
357 modulo processes bad values. It will set the bad-value flag of all
358 output ndarrays if the flag is set for any of the input ndarrays.
359
360 spaceship
361 Signature: (a(); b(); [o]c(); int $swap)
362
363 elementwise "<=>" operation
364
365 $c = $x->spaceship($y); # explicit call with default swap of 0
366 $c = $x->spaceship($y, 1); # explicit call with trailing 1 to swap args
367 $c = $a <=> $b; # overloaded use
368 $x->inplace->spaceship($y,0); # modify $x inplace
369
370 It can be made to work inplace with the "$x->inplace" syntax. This
371 function is used to overload the binary "<=>" function. As of 2.065,
372 when calling this function explicitly you can omit the third argument
373 (see first example), or supply it (see second one).
374
375 spaceship processes bad values. It will set the bad-value flag of all
376 output ndarrays if the flag is set for any of the input ndarrays.
377
378 sqrt
379 Signature: (a(); [o]b())
380
381 elementwise square root
382
383 $y = sqrt $x;
384 $x->inplace->sqrt; # modify $x inplace
385
386 It can be made to work inplace with the "$x->inplace" syntax. This
387 function is used to overload the unary "sqrt" operator/function.
388
389 sqrt processes bad values. It will set the bad-value flag of all
390 output ndarrays if the flag is set for any of the input ndarrays.
391
392 sin
393 Signature: (a(); [o]b())
394
395 the sin function
396
397 $y = sin $x;
398 $x->inplace->sin; # modify $x inplace
399
400 It can be made to work inplace with the "$x->inplace" syntax. This
401 function is used to overload the unary "sin" operator/function.
402
403 sin processes bad values. It will set the bad-value flag of all output
404 ndarrays if the flag is set for any of the input ndarrays.
405
406 cos
407 Signature: (a(); [o]b())
408
409 the cos function
410
411 $y = cos $x;
412 $x->inplace->cos; # modify $x inplace
413
414 It can be made to work inplace with the "$x->inplace" syntax. This
415 function is used to overload the unary "cos" operator/function.
416
417 cos processes bad values. It will set the bad-value flag of all output
418 ndarrays if the flag is set for any of the input ndarrays.
419
420 not
421 Signature: (a(); [o]b())
422
423 the elementwise not operation
424
425 $y = ! $x;
426 $x->inplace->not; # modify $x inplace
427
428 It can be made to work inplace with the "$x->inplace" syntax. This
429 function is used to overload the unary "!" operator/function.
430
431 not processes bad values. It will set the bad-value flag of all output
432 ndarrays if the flag is set for any of the input ndarrays.
433
434 exp
435 Signature: (a(); [o]b())
436
437 the exponential function
438
439 $y = exp $x;
440 $x->inplace->exp; # modify $x inplace
441
442 It can be made to work inplace with the "$x->inplace" syntax. This
443 function is used to overload the unary "exp" operator/function.
444
445 exp processes bad values. It will set the bad-value flag of all output
446 ndarrays if the flag is set for any of the input ndarrays.
447
448 log
449 Signature: (a(); [o]b())
450
451 the natural logarithm
452
453 $y = log $x;
454 $x->inplace->log; # modify $x inplace
455
456 It can be made to work inplace with the "$x->inplace" syntax. This
457 function is used to overload the unary "log" operator/function.
458
459 log processes bad values. It will set the bad-value flag of all output
460 ndarrays if the flag is set for any of the input ndarrays.
461
462 re
463 Signature: (complexv(); real [o]b())
464
465 Returns the real part of a complex number. Flows data back & forth.
466
467 re processes bad values. It will set the bad-value flag of all output
468 ndarrays if the flag is set for any of the input ndarrays.
469
470 im
471 Signature: (complexv(); real [o]b())
472
473 Returns the imaginary part of a complex number. Flows data back &
474 forth.
475
476 im processes bad values. It will set the bad-value flag of all output
477 ndarrays if the flag is set for any of the input ndarrays.
478
479 _cabs
480 Signature: (complexv(); real [o]b())
481
482 Returns the absolute (length) of a complex number.
483
484 _cabs processes bad values. It will set the bad-value flag of all
485 output ndarrays if the flag is set for any of the input ndarrays.
486
487 log10
488 Signature: (a(); [o]b())
489
490 the base 10 logarithm
491
492 $y = log10 $x;
493 $x->inplace->log10; # modify $x inplace
494
495 It can be made to work inplace with the "$x->inplace" syntax. This
496 function is used to overload the unary "log10" operator/function.
497
498 log10 processes bad values. It will set the bad-value flag of all
499 output ndarrays if the flag is set for any of the input ndarrays.
500
501 assgn
502 Signature: (a(); [o]b())
503
504 Plain numerical assignment. This is used to implement the ".=" operator
505
506 assgn processes bad values. It will set the bad-value flag of all
507 output ndarrays if the flag is set for any of the input ndarrays.
508
509 carg
510 Signature: (complexv(); real [o]b())
511
512 Returns the polar angle of a complex number.
513
514 carg processes bad values. It will set the bad-value flag of all
515 output ndarrays if the flag is set for any of the input ndarrays.
516
517 conj
518 Signature: (complexv(); [o]b())
519
520 complex conjugate.
521
522 conj processes bad values. It will set the bad-value flag of all
523 output ndarrays if the flag is set for any of the input ndarrays.
524
525 czip
526 Signature: (r(); i(); complex [o]c())
527
528 convert real, imaginary to native complex, (sort of) like LISP zip
529 function. Will add the "r" ndarray to "i" times the "i" ndarray. Only
530 takes real ndarrays as input.
531
532 czip does not process bad values. It will set the bad-value flag of
533 all output ndarrays if the flag is set for any of the input ndarrays.
534
535 ipow
536 Signature: (a(); indx b(); [o] ans())
537
538 raise ndarray $a to integer power $b
539
540 $c = $x->ipow($y); # as method
541 $c = ipow $x, $y;
542 $x->inplace->ipow($y); # modify $x inplace
543
544 It can be made to work inplace with the "$x->inplace" syntax.
545
546 Algorithm from Wikipedia
547 <http://en.wikipedia.org/wiki/Exponentiation_by_squaring>
548
549 ipow does not process bad values. It will set the bad-value flag of
550 all output ndarrays if the flag is set for any of the input ndarrays.
551
552 abs
553 Returns the absolute value of a number.
554
555 abs2
556 Returns the square of the absolute value of a number.
557
558 r2C
559 Signature: (r(); complex [o]c())
560
561 convert real to native complex, with an imaginary part of zero
562
563 r2C does not process bad values. It will set the bad-value flag of all
564 output ndarrays if the flag is set for any of the input ndarrays.
565
566 i2C
567 Signature: (i(); complex [o]c())
568
569 convert imaginary to native complex, with a real part of zero
570
571 i2C does not process bad values. It will set the bad-value flag of all
572 output ndarrays if the flag is set for any of the input ndarrays.
573
575 Tuomas J. Lukka (lukka@fas.harvard.edu), Karl Glazebrook
576 (kgb@aaoepp.aao.gov.au), Doug Hunt (dhunt@ucar.edu), Christian Soeller
577 (c.soeller@auckland.ac.nz), Doug Burke (burke@ifa.hawaii.edu), and
578 Craig DeForest (deforest@boulder.swri.edu).
579
580
581
582perl v5.38.0 2023-07-21 Ops(3)