The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

PDL::Ops - Fundamental mathematical operators

DESCRIPTION

This module provides the functions used by PDL to overload the basic mathematical operators (+ - / * etc.) and functions (sin sqrt etc.)

It also includes the function log10, which should be a perl function so that we can overload it!

Matrix multiplication (the operator x) is handled by the module PDL::Primitive.

SYNOPSIS

none

FUNCTIONS

plus

Signature: (a(); b(); [o]c(); int swap)

add two piddles

$c = plus $a, $b, 0;     # explicit call with trailing 0
$c = $a + $b;           # overloaded call
$a->inplace->plus($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary + operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

mult

Signature: (a(); b(); [o]c(); int swap)

multiply two piddles

$c = mult $a, $b, 0;     # explicit call with trailing 0
$c = $a * $b;           # overloaded call
$a->inplace->mult($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary * operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

minus

Signature: (a(); b(); [o]c(); int swap)

subtract two piddles

$c = minus $a, $b, 0;     # explicit call with trailing 0
$c = $a - $b;           # overloaded call
$a->inplace->minus($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary - operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

divide

Signature: (a(); b(); [o]c(); int swap)

divide two piddles

$c = divide $a, $b, 0;     # explicit call with trailing 0
$c = $a / $b;           # overloaded call
$a->inplace->divide($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary / operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

gt

Signature: (a(); b(); [o]c(); int swap)

the binary > (greater than) operation

$c = gt $a, $b, 0;     # explicit call with trailing 0
$c = $a > $b;           # overloaded call
$a->inplace->gt($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary > operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

lt

Signature: (a(); b(); [o]c(); int swap)

the binary < (less than) operation

$c = lt $a, $b, 0;     # explicit call with trailing 0
$c = $a < $b;           # overloaded call
$a->inplace->lt($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary < operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

le

Signature: (a(); b(); [o]c(); int swap)

the binary <= (less equal) operation

$c = le $a, $b, 0;     # explicit call with trailing 0
$c = $a <= $b;           # overloaded call
$a->inplace->le($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary <= operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

ge

Signature: (a(); b(); [o]c(); int swap)

the binary >= (greater equal) operation

$c = ge $a, $b, 0;     # explicit call with trailing 0
$c = $a >= $b;           # overloaded call
$a->inplace->ge($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary >= operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

eq

Signature: (a(); b(); [o]c(); int swap)

binary equal to operation (==)

$c = eq $a, $b, 0;     # explicit call with trailing 0
$c = $a == $b;           # overloaded call
$a->inplace->eq($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary == operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

ne

Signature: (a(); b(); [o]c(); int swap)

binary not equal to operation (!=)

$c = ne $a, $b, 0;     # explicit call with trailing 0
$c = $a != $b;           # overloaded call
$a->inplace->ne($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary != operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

shiftleft

Signature: (a(); b(); [o]c(); int swap)

leftshift $a by $b

$c = shiftleft $a, $b, 0;     # explicit call with trailing 0
$c = $a << $b;           # overloaded call
$a->inplace->shiftleft($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary << operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

shiftright

Signature: (a(); b(); [o]c(); int swap)

rightshift $a by $b

$c = shiftright $a, $b, 0;     # explicit call with trailing 0
$c = $a >> $b;           # overloaded call
$a->inplace->shiftright($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary >> operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

or2

Signature: (a(); b(); [o]c(); int swap)

binary or of two piddles

$c = or2 $a, $b, 0;     # explicit call with trailing 0
$c = $a | $b;           # overloaded call
$a->inplace->or2($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary | operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

and2

Signature: (a(); b(); [o]c(); int swap)

binary and of two piddles

$c = and2 $a, $b, 0;     # explicit call with trailing 0
$c = $a & $b;           # overloaded call
$a->inplace->and2($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary & operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

xor

Signature: (a(); b(); [o]c(); int swap)

binary exclusive or of two piddles

$c = xor $a, $b, 0;     # explicit call with trailing 0
$c = $a ^ $b;           # overloaded call
$a->inplace->xor($b,0);  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary ^ operator. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

bitnot

Signature: (a(); [o]b())

unary bit negation

$b = ~ $a;
$a->inplace->bitnot;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary ~ operator/function.

power

Signature: (a(); b(); [o]c(); int swap)

raise piddle $a to the power $b

$c = $a->power($b,0); # explicit function call
$c = $a ** $b;    # overloaded use
$a->inplace->power($b,0);     # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary ** function. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

atan2

Signature: (a(); b(); [o]c(); int swap)

elementwise atan2 of two piddles

$c = $a->atan2($b,0); # explicit function call
$c = atan2 $a, $b;    # overloaded use
$a->inplace->atan2($b,0);     # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary atan2 function. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

modulo

Signature: (a(); b(); [o]c(); int swap)

elementwise modulo operation

$c = $a->modulo($b,0); # explicit function call
$c = $a % $b;    # overloaded use
$a->inplace->modulo($b,0);     # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary % function. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

spaceship

Signature: (a(); b(); [o]c(); int swap)

elementwise "<=>" operation

$c = $a->spaceship($b,0); # explicit function call
$c = $a <=> $b;    # overloaded use
$a->inplace->spaceship($b,0);     # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the binary <=> function. Note that when calling this function explicitly you need to supply a third argument that should generally be zero (see first example). This restriction is expected to go away in future releases.

sqrt

Signature: (a(); [o]b())

elementwise square root

$b = sqrt $a;
$a->inplace->sqrt;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary sqrt operator/function.

abs

Signature: (a(); [o]b())

elementwise absolute value

$b = abs $a;
$a->inplace->abs;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary abs operator/function.

sin

Signature: (a(); [o]b())

the sin function

$b = sin $a;
$a->inplace->sin;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary sin operator/function.

cos

Signature: (a(); [o]b())

the cos function

$b = cos $a;
$a->inplace->cos;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary cos operator/function.

not

Signature: (a(); [o]b())

the elementwise not operation

$b = ! $a;
$a->inplace->not;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary ! operator/function.

exp

Signature: (a(); [o]b())

the exponential function

$b = exp $a;
$a->inplace->exp;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary exp operator/function.

log

Signature: (a(); [o]b())

the natural logarithm

$b = log $a;
$a->inplace->log;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary log operator/function.

log10

Signature: (a(); [o]b())

the base 10 logarithm

$b = log10 $a;
$a->inplace->log10;  # modify $a inplace

It can be made to work inplace with the $a->inplace syntax. This function is used to overload the unary log10 operator/function.

assgn

Signature: (a(); [o]b())

Plain numerical assignment. This is used to implement the ".=" operator

AUTHOR

Tuomas J. Lukka (lukka@fas.harvard.edu), Karl Glazebrook (kgb@aaoepp.aao.gov.au), Doug Hunt (dhunt@ucar.edu), Christian Soeller (c.soeller@auckland.ac.nz), Doug Burke (burke@ifa.hawaii.edu), and Craig DeForest (deforest@boulder.swri.edu).