not fully implmented vec4 class
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=wp), | public | :: | p |
vec4 components |
|||
real(kind=wp), | public | :: | x |
vec4 components |
|||
real(kind=wp), | public | :: | y |
vec4 components |
|||
real(kind=wp), | public | :: | z |
vec4 components |
Initalise a vec4 from a vec3 and a scalar
Initalise vec4 from a vec3 and Scalar e.g vec4 = [vec3%x, vec3%y, vec3%z, scalar]
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(vector), | intent(in) | :: | vec |
Input vec3 |
||
real(kind=wp), | intent(in) | :: | val |
Input Scalar |
Returns the magnitude of a vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | this |
Overloaded Mulitiplication operator
Elementwise vec4 * vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to multiply by |
Elementwise vec4 * Scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to multiply by |
Elementwise Scalar * vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to multiply by |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
Overloaded Addition operator
Elementwise vec4 + vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to add |
Elementwise vec4 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to add |
Elementwise scalar + vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to add |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
Overloaded Subtraction operator
Elementwise vec4 - vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to subtract |
Elementwise vec4 - scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to subtract |
Elementwise Scalar - vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to subtract |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
.dot. operator
dot product between two vec4s
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to dot with |
Overloaded Division operator
Elementwise vec4 / Scalar. Scalar is 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=sp), | intent(in) | :: | b |
Scalar to divide by |
Elementwise vec4 / Scalar. Scalar is 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=dp), | intent(in) | :: | b |
Scalar to divide by |
Elementwise vec4 / Scalar. Scalar is an integer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
integer, | intent(in) | :: | b |
Scalar to divide by |
Elementwise scalar + vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to add |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
Elementwise Scalar - vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to subtract |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
Elementwise Scalar * vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | intent(in) | :: | a |
Scalar to multiply by |
||
class(vec4), | intent(in) | :: | b |
Input vec4 |
Elementwise vec4 + scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to add |
Elementwise vec4 + vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to add |
Elementwise vec4 / Scalar. Scalar is an integer
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
integer, | intent(in) | :: | b |
Scalar to divide by |
Elementwise vec4 / Scalar. Scalar is 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=sp), | intent(in) | :: | b |
Scalar to divide by |
Elementwise vec4 / Scalar. Scalar is 32-bit float
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=dp), | intent(in) | :: | b |
Scalar to divide by |
dot product between two vec4s
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to dot with |
Elementwise vec4 - scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to subtract |
Elementwise vec4 - vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to subtract |
Elementwise vec4 * Scalar
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
real(kind=wp), | intent(in) | :: | b |
Scalar to multiply by |
Elementwise vec4 * vec4
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(vec4), | intent(in) | :: | a |
Input vec4 |
||
type(vec4), | intent(in) | :: | b |
vec4 to multiply by |
type :: vec4 !> vec4 components real(kind=wp) :: x, y, z, p contains procedure :: magnitude => magnitude_fn procedure :: length => length !> .dot. operator generic :: operator(.dot.) => vec_dot_vec !> Overloaded Division operator generic :: operator(/) => vec_div_scal_r4, vec_div_scal_r8, vec_div_scal_int !> Overloaded Mulitiplication operator generic :: operator(*) => vec_mult_vec, vec_mult_scal, scal_mult_vec !> Overloaded Addition operator generic :: operator(+) => vec_add_vec, vec_add_scal, scal_add_vec !> Overloaded Subtraction operator generic :: operator(-) => vec_minus_vec, vec_minus_scal, scal_minus_vec procedure, pass(a), private :: vec_dot_vec procedure, pass(a), private :: vec_div_scal_r4 procedure, pass(a), private :: vec_div_scal_r8 procedure, pass(a), private :: vec_div_scal_int procedure, pass(a), private :: vec_mult_vec procedure, pass(a), private :: vec_mult_scal procedure, pass(b), private :: scal_mult_vec procedure, pass(a), private :: vec_add_vec procedure, pass(a), private :: vec_add_scal procedure, pass(b), private :: scal_add_vec procedure, pass(a), private :: vec_minus_vec procedure, pass(a), private :: vec_minus_scal procedure, pass(b), private :: scal_minus_vec end type vec4