 NCL Home > Documentation > Functions > Array manipulators

crossp3

Compute cross product of multiple vectors of length 3. Available in version 5.1.0 and later.

Prototype

```load "\$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"  ; This library is automatically loaded
; from NCL V6.2.0 onward.
; No need for user to explicitly load.

function crossp3 (
a [*] : numeric,
b [*] : numeric
)

return_val  :  same type and shape of a
```

Arguments

a

A two dimensional array of any numeric type. The right dimension must be of length 3 [x,y,z directions].

b

A two dimensional array of any numeric type. The right dimension must be of length 3 [x,y,z directions].

Return value

The results are returned in an array of the same shape and type as a.

Description

The following is applied to each triplet.

```     c(0) = a(1)*b(2)-a(2)*b(1)
c(1) = a(2)*b(0)-a(0)*b(2)
c(2) = a(0)*b(1)-a(1)*b(0)
```

Examples

The following require that contributed.ncl be loaded prior to invoking the function.

``` load "\$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
```

Example 1

```  a  = (/ (/ 2,  -3,  -1/) \
, (/-4, 9.3, 0.4/) /)
b  = (/ (/ 1,   4,  -2/) \
, (/-9,   0,-5.4/) /)

ab = crossp3(a,b)
ba = crossp3(b,a)

print("ab="+ab +"   ba="+ba)
```
The output would be:
```    (0,0)	ab=10       ba=-10
(0,1)	ab=3        ba=-3
(0,2)	ab=11       ba=-11

(1,0)	ab=-50.22   ba=50.22
(1,1)	ab=-25.2    ba=25.2
(1,2)	ab=83.7     ba=-83.7
```