| 
| pure logical function  | math::sabscmp (x, y) | 
|   | Return single precision absolute comparison \( | x - y | < \epsilon \).  
  | 
|   | 
| pure logical function  | math::dabscmp (x, y) | 
|   | Return double precision absolute comparison \( | x - y | < \epsilon \).  
  | 
|   | 
| pure logical function  | math::qabscmp (x, y) | 
|   | Return double precision absolute comparison \( | x - y | < \epsilon \).  
  | 
|   | 
| pure logical function  | math::srelcmp (x, y, eps) | 
|   | Return single precision relative comparison \( | x - y |<= \epsilon*|y| \).  
  | 
|   | 
| pure logical function  | math::drelcmp (x, y, eps) | 
|   | Return double precision relative comparison \( | x - y |/|y| < \epsilon \).  
  | 
|   | 
| pure logical function  | math::qrelcmp (x, y, eps) | 
|   | Return quad precision relative comparison \( | x - y |/|y| < \epsilon \).  
  | 
|   | 
| subroutine, public  | math::rzero (a, n) | 
|   | Zero a real vector.  
  | 
|   | 
| subroutine, public  | math::izero (a, n) | 
|   | Zero an integer vector.  
  | 
|   | 
| subroutine, public  | math::row_zero (a, m, n, e) | 
|   | Sets row e to 0 in matrix a.  
  | 
|   | 
| subroutine, public  | math::rone (a, n) | 
|   | Set all elements to one.  
  | 
|   | 
| subroutine, public  | math::copy (a, b, n) | 
|   | Copy a vector \( a = b \).  
  | 
|   | 
| subroutine, public  | math::masked_copy (a, b, mask, n, m) | 
|   | Copy a masked vector \( a(mask) = b(mask) \).  
  | 
|   | 
| subroutine, public  | math::masked_red_copy (a, b, mask, n, m) | 
|   | Copy a masked vector to reduced contigous vector \( a = b(mask) \).  
  | 
|   | 
| subroutine, public  | math::cfill_mask (a, c, size, mask, mask_size) | 
|   | Fill a constant to a masked vector. \( a_i = c, for i in mask \).  
  | 
|   | 
| subroutine, public  | math::cmult (a, c, n) | 
|   | Multiplication by constant c \( a = c \cdot a \).  
  | 
|   | 
| subroutine, public  | math::cadd (a, s, n) | 
|   | Add a scalar to vector \( a_i = a_i + s \).  
  | 
|   | 
| subroutine, public  | math::cadd2 (a, b, s, n) | 
|   | Add a scalar to vector \( a_i = b_i + s \).  
  | 
|   | 
| subroutine, public  | math::cfill (a, c, n) | 
|   | Set all elements to a constant c \( a = c \).  
  | 
|   | 
| real(kind=rp) function, public  | math::glsum (a, n) | 
|   | Sum a vector of length n.  
  | 
|   | 
| real(kind=rp) function, public  | math::glmax (a, n) | 
|   | Max of a vector of length n.  
  | 
|   | 
| integer function, public  | math::glimax (a, n) | 
|   | Max of an integer vector of length n.  
  | 
|   | 
| real(kind=rp) function, public  | math::glmin (a, n) | 
|   | Min of a vector of length n.  
  | 
|   | 
| integer function, public  | math::glimin (a, n) | 
|   | Min of an integer vector of length n.  
  | 
|   | 
| subroutine, public  | math::chsign (a, n) | 
|   | Change sign of vector \( a = -a \).  
  | 
|   | 
| real(kind=rp) function, public  | math::vlmax (vec, n) | 
|   | maximum value of a vector of length n  
  | 
|   | 
| real(kind=rp) function, public  | math::vlmin (vec, n) | 
|   | minimun value of a vector of length n  
  | 
|   | 
| subroutine, public  | math::invcol1 (a, n) | 
|   | Invert a vector \( a = 1 / a \).  
  | 
|   | 
| subroutine, public  | math::invcol3 (a, b, c, n) | 
|   | Invert a vector \( a = b / c \).  
  | 
|   | 
| subroutine, public  | math::invers2 (a, b, n) | 
|   | Compute inverted vector \( a = 1 / b \).  
  | 
|   | 
| subroutine, public  | math::vcross (u1, u2, u3, v1, v2, v3, w1, w2, w3, n) | 
|   | Compute a cross product \( u = v \times w \) assuming vector components \( u = (u_1, u_2, u_3) \) etc.  
  | 
|   | 
| subroutine, public  | math::vdot2 (dot, u1, u2, v1, v2, n) | 
|   | Compute a dot product \( dot = u \cdot v \) (2-d version) assuming vector components \( u = (u_1, u_2, u_3) \) etc.  
  | 
|   | 
| subroutine, public  | math::vdot3 (dot, u1, u2, u3, v1, v2, v3, n) | 
|   | Compute a dot product \( dot = u \cdot v \) (3-d version) assuming vector components \( u = (u_1, u_2, u_3) \) etc.  
  | 
|   | 
| real(kind=rp) function, public  | math::vlsc3 (u, v, w, n) | 
|   | Compute multiplication sum \( dot = u \cdot v \cdot w \).  
  | 
|   | 
| real(kind=rp) function, public  | math::vlsc2 (u, v, n) | 
|   | Compute multiplication sum \( dot = u \cdot v \cdot w \).  
  | 
|   | 
| subroutine, public  | math::add2 (a, b, n) | 
|   | Vector addition \( a = a + b \).  
  | 
|   | 
| subroutine, public  | math::add3 (a, b, c, n) | 
|   | Vector addition \( a = b + c \).  
  | 
|   | 
| subroutine, public  | math::add4 (a, b, c, d, n) | 
|   | Vector addition \( a = b + c + d\).  
  | 
|   | 
| subroutine, public  | math::sub2 (a, b, n) | 
|   | Vector substraction \( a = a - b \).  
  | 
|   | 
| subroutine, public  | math::sub3 (a, b, c, n) | 
|   | Vector subtraction \( a = b - c \).  
  | 
|   | 
| subroutine, public  | math::add2s1 (a, b, c1, n) | 
|   | Vector addition with scalar multiplication \( a = c_1 a + b \) (multiplication on first argument)  
  | 
|   | 
| subroutine, public  | math::add2s2 (a, b, c1, n) | 
|   | Vector addition with scalar multiplication \( a = a + c_1 b \) (multiplication on second argument)  
  | 
|   | 
| subroutine, public  | math::addsqr2s2 (a, b, c1, n) | 
|   | Returns \( a = a + c1 * (b * b )\).  
  | 
|   | 
| subroutine, public  | math::cmult2 (a, b, c, n) | 
|   | Multiplication by constant c \( a = c \cdot b \).  
  | 
|   | 
| subroutine, public  | math::invcol2 (a, b, n) | 
|   | Vector division \( a = a / b \).  
  | 
|   | 
| subroutine, public  | math::col2 (a, b, n) | 
|   | Vector multiplication \( a = a \cdot b \).  
  | 
|   | 
| subroutine, public  | math::col3 (a, b, c, n) | 
|   | Vector multiplication with 3 vectors \( a =  b \cdot c \).  
  | 
|   | 
| subroutine, public  | math::subcol3 (a, b, c, n) | 
|   | Returns \( a = a - b*c \).  
  | 
|   | 
| subroutine, public  | math::add3s2 (a, b, c, c1, c2, n) | 
|   | Returns \( a = c1 * b + c2 * c \).  
  | 
|   | 
| subroutine, public  | math::subcol4 (a, b, c, d, n) | 
|   | Returns \( a = a - b*c*d \).  
  | 
|   | 
| subroutine, public  | math::addcol3 (a, b, c, n) | 
|   | Returns \( a = a + b*c \).  
  | 
|   | 
| subroutine, public  | math::addcol4 (a, b, c, d, n) | 
|   | Returns \( a = a + b*c*d \).  
  | 
|   | 
| subroutine, public  | math::ascol5 (a, b, c, d, e, n) | 
|   | Returns \( a = b \dot c - d \cdot e \).  
  | 
|   | 
| subroutine, public  | math::p_update (a, b, c, c1, c2, n) | 
|   | Returns \( a = b \dot c1 ( a - c2 \cdot c )\).  
  | 
|   | 
| subroutine, public  | math::x_update (a, b, c, c1, c2, n) | 
|   | Returns \( a = b \dot c1 ( a - c2 \cdot c )\).  
  | 
|   | 
| real(kind=rp) function, public  | math::glsc2 (a, b, n) | 
|   | Weighted inner product \( a^T b \).  
  | 
|   | 
| real(kind=rp) function, public  | math::glsc3 (a, b, c, n) | 
|   | Weighted inner product \( a^T b c \).  
  | 
|   | 
| real(kind=rp) function, public  | math::glsc4 (a, b, c, d, n) | 
|   | 
| subroutine  | math::sortrp (a, ind, n) | 
|   | Heap Sort for double precision arrays.  
  | 
|   | 
| subroutine  | math::sorti4 (a, ind, n) | 
|   | Heap Sort for single integer arrays.  
  | 
|   | 
| subroutine  | math::swapdp (b, ind, n) | 
|   | sort double precision array acording to ind vector  
  | 
|   | 
| subroutine  | math::swapi4 (b, ind, n) | 
|   | sort single integer array acording to ind vector  
  | 
|   | 
| subroutine  | math::reorddp (b, ind, n) | 
|   | reorder double precision array - inverse of swap  
  | 
|   | 
| subroutine  | math::reordi4 (b, ind, n) | 
|   | reorder single integer array - inverse of swap  
  | 
|   | 
| subroutine  | math::flipvdp (b, ind, n) | 
|   | Flip double precision vector b and ind.  
  | 
|   | 
| subroutine  | math::flipvi4 (b, ind, n) | 
|   | Flip single integer vector b and ind.  
  | 
|   | 
| subroutine, public  | math::absval (a, n) | 
|   | Take the absolute value of an array.  
  | 
|   | 
| subroutine  | math::pwmax_vec2 (a, b, n) | 
|   | Point-wise maximum of two vectors \( a = \max(a, b) \).  
  | 
|   | 
| subroutine  | math::pwmax_vec3 (a, b, c, n) | 
|   | Point-wise maximum of two vectors \( a = \max(b, c) \).  
  | 
|   | 
| subroutine  | math::pwmax_scal2 (a, b, n) | 
|   | Point-wise maximum of scalar and vector \( a = \max(a, b) \).  
  | 
|   | 
| subroutine  | math::pwmax_scal3 (a, b, c, n) | 
|   | Point-wise maximum of scalar and vector \( a = \max(b, c) \).  
  | 
|   | 
| subroutine  | math::pwmin_vec2 (a, b, n) | 
|   | Point-wise minimum of two vectors \( a = \min(a, b) \).  
  | 
|   | 
| subroutine  | math::pwmin_vec3 (a, b, c, n) | 
|   | Point-wise minimum of two vectors \( a = \min(b, c) \).  
  | 
|   | 
| subroutine  | math::pwmin_sca2 (a, b, n) | 
|   | Point-wise minimum of scalar and vector \( a = \min(a, b) \).  
  | 
|   | 
| subroutine  | math::pwmin_sca3 (a, b, c, n) | 
|   | Point-wise minimum of scalar and vector \( a = \min(b, c) \).  
  | 
|   |