kigubkur.elfun.square

Elementary Function: squaring function.

(require '[kigubkur.elfun [square :refer [sq]]])

Examples

Square of a scalar

=> (sq 3)
 9.0

Square of a matrix

=> (def r [[1 2 3 4]])
=> (def c [[1][2][3][4]])
=> (def M [[1 2] [3 4]])
=> (view (sq r))
 [1.0 4.0 9.0 16.0]
Order -> 1 x 4
=> (view (sq c))
 [1.0]
 [4.0]
 [9.0]
 [16.0]
Order-> 4 x 1
=> (view (sq M))
 [1.0 4.0]
 [9.0 16.0]
Order -> 2 x 2

Square of a block

(require '[kigubkur.construct [blocking :refer [block]]])
=> (def L [[1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]
           [1 2 3 4 5 6 7 8 9 10]])
=> (def B (block L 5))
=> (pprint B)
 [[{:A11 [[1 2 3 4 5]
          [1 2 3 4 5]
          [1 2 3 4 5]
          [1 2 3 4 5]
          [1 2 3 4 5]],
    :A12 [[6 7 8 9 10]
          [6 7 8 9 10]
          [6 7 8 9 10]
          [6 7 8 9 10]
          [6 7 8 9 10]]}]
  [{:A22 [[6 7 8 9 10]
          [6 7 8 9 10]],
    :A21 [[1 2 3 4 5]
          [1 2 3 4 5]]}]]
=> (pprint (sq B 2))
 [[{:A11 [[1.0 4.0 9.0 16.0 25.0]
          [1.0 4.0 9.0 16.0 25.0]
          [1.0 4.0 9.0 16.0 25.0]
          [1.0 4.0 9.0 16.0 25.0]
          [1.0 4.0 9.0 16.0 25.0]],
    :A12 [[36.0 49.0 64.0 81.0 100.0]
          [36.0 49.0 64.0 81.0 100.0]
          [36.0 49.0 64.0 81.0 100.0]
          [36.0 49.0 64.0 81.0 100.0]
          [36.0 49.0 64.0 81.0 100.0]]}]
  [{:A22 [[36.0 49.0 64.0 81.0 100.0] [36.0 49.0 64.0 81.0 100.0]],
    :A21 [[1.0 4.0 9.0 16.0 25.0] [1.0 4.0 9.0 16.0 25.0]]}]]

sq

(sq X)

Given a scalar, row matrix, column matrix, matrix or a block and a scalar, row matrix, column matrix, matrix or a block, returns element-wise square.

Syntax: (sq X) s.t X is a scalar or a kigubkur© matrix (or both blocks)

Note:

if xik or yik ∈ {##NaN, ##Inf, ##-Inf}, returns ##NaN,

otherwise, returns x2.