fury_uom_symbol128 Module

module~~fury_uom_symbol128~~UsesGraph module~fury_uom_symbol128 fury_uom_symbol128 module~penf~3 penf module~penf~3->module~fury_uom_symbol128 module~stringifor stringifor module~penf~3->module~stringifor module~fury_uom_converter fury_uom_converter module~penf~3->module~fury_uom_converter module~stringifor_string_t stringifor_string_t module~penf~3->module~stringifor_string_t module~befor64 befor64 module~penf~3->module~befor64 module~befor64_pack_data_m~2 befor64_pack_data_m module~penf~3->module~befor64_pack_data_m~2 iso_fortran_env iso_fortran_env iso_fortran_env->module~fury_uom_symbol128 module~penf_stringify~3 penf_stringify iso_fortran_env->module~penf_stringify~3 module~stringifor->module~fury_uom_symbol128 module~fury_uom_converter->module~fury_uom_symbol128 module~penf_global_parameters_variables penf_global_parameters_variables module~penf_global_parameters_variables->module~penf~3 module~penf_b_size~4 penf_b_size module~penf_global_parameters_variables->module~penf_b_size~4 module~penf_global_parameters_variables->module~penf_stringify~3 module~penf_b_size~4->module~penf~3 module~penf_b_size~4->module~penf_stringify~3 module~penf_stringify~3->module~penf~3 module~stringifor_string_t->module~stringifor module~befor64->module~stringifor_string_t module~befor64_pack_data_m~2->module~befor64
Help

FURY class definition of unit symbol with float128 kind.

FURY class implementation of unit symbol with generic kind.

Used By

module~~fury_uom_symbol128~~UsedByGraph module~fury_uom_symbol128 fury_uom_symbol128 module~fury_uom_reference128 fury_uom_reference128 module~fury_uom_symbol128->module~fury_uom_reference128 module~fury fury module~fury_uom_symbol128->module~fury module~fury_uom128 fury_uom128 module~fury_uom_symbol128->module~fury_uom128 module~fury_mixed_kinds fury_mixed_kinds module~fury_uom_symbol128->module~fury_mixed_kinds module~fury_uom_reference128->module~fury module~fury_uom_reference128->module~fury_uom128 module~fury_uom_reference128->module~fury_mixed_kinds module~fury_system_abstract128 fury_system_abstract128 module~fury_uom_reference128->module~fury_system_abstract128 program~fury_test_qreal_div_mixed fury_test_qreal_div_mixed module~fury->program~fury_test_qreal_div_mixed program~fury_test_qreal_eq fury_test_qreal_eq module~fury->program~fury_test_qreal_eq program~fury_test_uom_div fury_test_uom_div module~fury->program~fury_test_uom_div program~fury_test_qreal_eq_mixed fury_test_qreal_eq_mixed module~fury->program~fury_test_qreal_eq_mixed program~fury_test_uom_mul fury_test_uom_mul module~fury->program~fury_test_uom_mul program~fury_test_qreal_mul fury_test_qreal_mul module~fury->program~fury_test_qreal_mul program~fury_test_bolt32 fury_test_bolt32 module~fury->program~fury_test_bolt32 program~fury_test_uom_sub_failure fury_test_uom_sub_failure module~fury->program~fury_test_uom_sub_failure program~fury_test_qreal_mul_mixed fury_test_qreal_mul_mixed module~fury->program~fury_test_qreal_mul_mixed program~fury_test_bolt64 fury_test_bolt64 module~fury->program~fury_test_bolt64 program~fury_test_qreal_not_eq fury_test_qreal_not_eq module~fury->program~fury_test_qreal_not_eq program~fury_test_system_si fury_test_system_si module~fury->program~fury_test_system_si program~fury_test_uom_sub fury_test_uom_sub module~fury->program~fury_test_uom_sub program~fury_test_qreal_not_eq_mixed fury_test_qreal_not_eq_mixed module~fury->program~fury_test_qreal_not_eq_mixed program~fury_test_qreal_sub_failure fury_test_qreal_sub_failure module~fury->program~fury_test_qreal_sub_failure program~fury_test_qreal_pow fury_test_qreal_pow module~fury->program~fury_test_qreal_pow program~fury_test_uom_aliases fury_test_uom_aliases module~fury->program~fury_test_uom_aliases program~fury_test_qreal_sub fury_test_qreal_sub module~fury->program~fury_test_qreal_sub program~fury_test_uom_parse_failure fury_test_uom_parse_failure module~fury->program~fury_test_uom_parse_failure program~fury_test_qreal_add_aliases_failure fury_test_qreal_add_aliases_failure module~fury->program~fury_test_qreal_add_aliases_failure program~fury_test_qreal_add_failure fury_test_qreal_add_failure module~fury->program~fury_test_qreal_add_failure module~dbm_to_mw_converter dBm_to_mW_converter module~fury->module~dbm_to_mw_converter program~fury_test_qreal_sub_mixed fury_test_qreal_sub_mixed module~fury->program~fury_test_qreal_sub_mixed program~fury_test_qreal_add_mixed fury_test_qreal_add_mixed module~fury->program~fury_test_qreal_add_mixed program~fury_test_qreal_add fury_test_qreal_add module~fury->program~fury_test_qreal_add program~fury_test_qreal_sub_mixed_failure fury_test_qreal_sub_mixed_failure module~fury->program~fury_test_qreal_sub_mixed_failure program~fury_test_qreal_add_mixed_failure fury_test_qreal_add_mixed_failure module~fury->program~fury_test_qreal_add_mixed_failure program~fury_test_qreal_aliases fury_test_qreal_aliases module~fury->program~fury_test_qreal_aliases program~fury_test_uom_add fury_test_uom_add module~fury->program~fury_test_uom_add program~fury_test_qreal_assign fury_test_qreal_assign module~fury->program~fury_test_qreal_assign program~fury_test_uom_add_failure fury_test_uom_add_failure module~fury->program~fury_test_uom_add_failure program~fury_test_uom_assign fury_test_uom_assign module~fury->program~fury_test_uom_assign program~fury_test_qreal_conversions_complex fury_test_qreal_conversions_complex module~fury->program~fury_test_qreal_conversions_complex program~fury_test_qreal_conversions_si fury_test_qreal_conversions_si module~fury->program~fury_test_qreal_conversions_si program~fury_test_uom_pow fury_test_uom_pow module~fury->program~fury_test_uom_pow program~fury_test_qreal_conversions_simple fury_test_qreal_conversions_simple module~fury->program~fury_test_qreal_conversions_simple program~fury_test_uom_assign_failure fury_test_uom_assign_failure module~fury->program~fury_test_uom_assign_failure program~fury_test_qreal_div fury_test_qreal_div module~fury->program~fury_test_qreal_div module~fury_uom128->module~fury module~fury_uom128->module~fury_mixed_kinds module~fury_uom128->module~fury_system_abstract128 module~fury_system_si128 fury_system_si128 module~fury_uom128->module~fury_system_si128 module~fury_qreal128 fury_qreal128 module~fury_uom128->module~fury_qreal128 module~fury_mixed_kinds->module~fury module~fury_system_abstract128->module~fury module~fury_system_abstract128->module~fury_system_si128 module~fury_system_si128->module~fury module~dbm_to_mw_converter->program~fury_test_qreal_conversions_complex module~fury_qreal128->module~fury module~fury_qreal128->module~fury_mixed_kinds module~fury_qreal128->module~fury_system_abstract128 module~fury_qreal128->module~fury_system_si128
Help


Derived Types

type, public :: uom_symbol

Unit of measure (UOM) symbol.

Components

TypeVisibility AttributesNameInitial
class(uom_converter), private, allocatable:: convert_

Generic conversion alias formula user-supplied.

integer(kind=IKP), private :: exponent_ =1_IKP

Exponent of the symbol, e.g. "-1" for Hertz, namely "s-1".

real(kind=RKP), private :: factor_ =1._RKP

Symbol multiplicative scale factor (used only for converters).

real(kind=RKP), private :: offset_ =0._RKP

Symbol additive offset (used only for converters).

type(string), private :: symbol_

literal symbol, e.g. "m" for metres.

Type-Bound Procedures

procedure, public, pass(self) :: convert

Convert a magnitude with respect symbol definition.

procedure, public, pass(self) :: get_convert

Return the symbol generic conversion alias.

procedure, public, pass(self) :: get_exponent

Return the symbol exponent.

procedure, public, pass(self) :: get_factor

Return the symbol factor.

procedure, public, pass(self) :: get_offset

Return the symbol offset.

procedure, public, pass(self) :: get_symbol

Return the literal symbol.

procedure, public, pass(self) :: is_defined

Check if the symbol is defined.

procedure, public, pass(self) :: parse

Parse symbol from string.

procedure, public, pass(self) :: prefixed

Return a prefixed symbol.

procedure, public, pass(self) :: set

Set symbol.

procedure, public, pass(self) :: stringify

Return a string representaion of the symbol.

procedure, public, pass(self) :: unset

Unset symbol.

generic, public :: assignment(=) => assign_uom_symbol

Overloading = assignment.

generic, public :: operator(/) => div

Overloading / operator.

generic, public :: operator(*) => mul

Overloading * operator.

generic, public :: operator(**) => pow_R8P, pow_R4P, pow_I8P, pow_I4P, pow_I2P, pow_I1P

Overloading ** operator.

generic, public :: operator(==) => is_equal

Overloading == operator.

generic, public :: operator(.compatible.) => is_compatible

Definition of .compatible. operator.

generic, public :: operator(.convertible.) => is_convertible

Definition of .convertible. operator.

procedure, private, pass(self) :: is_compatible

Check if the symbol is compatible with another one.

procedure, private, pass(self) :: is_convertible

Check if the symbol is convertible with another one.

procedure, private, pass(self) :: is_equal

Check if the symbol is equal with another one.

procedure, private, pass(lhs) :: assign_uom_symbol

uom_symbol = uom_symbol assignment.

procedure, private, pass(lhs) :: div

uom_symbol / uom_symbol operator.

procedure, private, pass(lhs) :: mul

uom_symbol * uom_symbol operator.

procedure, private, pass(lhs) :: pow_R16P

uom_symbol ** real(R16P) operator.

procedure, private, pass(lhs) :: pow_R8P

uom_symbol ** real(R8P) operator.

procedure, private, pass(lhs) :: pow_R4P

uom_symbol ** real(R4P) operator.

procedure, private, pass(lhs) :: pow_I8P

uom_symbol ** integer(I8P) operator.

procedure, private, pass(lhs) :: pow_I4P

uom_symbol ** integer(I4P) operator.

procedure, private, pass(lhs) :: pow_I2P

uom_symbol ** integer(I2P) operator.

procedure, private, pass(lhs) :: pow_I1P

uom_symbol ** integer(I1P) operator.


Functions

private elemental function convert(self, magnitude, inverse) result(converted)

Convert a magnitude with respect symbol definition.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

real(kind=RKP), intent(in) :: magnitude

Magnitude to be converted.

logical, intent(in), optional :: inverse

Activate inverse conversion.

Return Value real(kind=RKP)

Converted magnitude.

private elemental function get_exponent(self) result(exponent_)

Return the symbol exponent.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

Return Value integer(kind=IKP)

The symbol exponent.

private elemental function get_factor(self) result(factor_)

Return the symbol factor.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

Return Value real(kind=RKP)

The symbol factor.

private elemental function get_offset(self) result(offset_)

Return the symbol offset.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

Return Value real(kind=RKP)

The symbol offset.

private elemental function get_symbol(self) result(symbol_)

Return the literal symbol.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

Return Value type(string)

The literal symbol.

private elemental function is_defined(self)

Check if uom_symbol is defined.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

Return Value logical

Check result.

private elemental function prefixed(self, prefix)

Return a prefixed symbol.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

type(uom_symbol), intent(in) :: prefix

Other symbol used for prefixing.

Return Value type(uom_symbol)

The prefixed symbol.

private pure function stringify(self, compact_reals) result(raw)

Return a string representation of uom_symbol.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

logical, intent(in), optional :: compact_reals

Flag to activate real numbers compacting.

Return Value character(len=:), allocatable

Raw characters data.

private elemental function is_compatible(self, other)

Check if uom_symbol is compatible with another one.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

type(uom_symbol), intent(in) :: other

The other symbol.

Return Value logical

Check result.

private elemental function is_convertible(self, other)

Check if uom_symbol is convertible with another one.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

type(uom_symbol), intent(in) :: other

The other symbol.

Return Value logical

Check result.

private elemental function is_equal(self, other)

Check if uom_symbol is equal with another one.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

type(uom_symbol), intent(in) :: other

The other symbol.

Return Value logical

Check result.

private pure function div(lhs, rhs) result(opr)

uom_symbol / uom_symbol operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

type(uom_symbol), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function mul(lhs, rhs) result(opr)

uom_symbol * uom_symbol operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

type(uom_symbol), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_R16P(lhs, rhs) result(opr)

uom_symbol ** real(R16P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

real(kind=R16P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_R8P(lhs, rhs) result(opr)

uom_symbol ** real(R8P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

real(kind=R8P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_R4P(lhs, rhs) result(opr)

uom_symbol ** real(R4P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

real(kind=R4P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_I8P(lhs, rhs) result(opr)

uom_symbol ** integer(I8P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

integer(kind=I8P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_I4P(lhs, rhs) result(opr)

uom_symbol ** integer(I4P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

integer(kind=I4P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_I2P(lhs, rhs) result(opr)

uom_symbol ** integer(I2P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

integer(kind=I2P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.

private pure function pow_I1P(lhs, rhs) result(opr)

uom_symbol ** integer(I1P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: lhs

Left hand side.

integer(kind=I1P), intent(in) :: rhs

Right hand side.

Return Value type(uom_symbol)

Operator result.


Subroutines

private subroutine get_convert(self, convert_)

Return the symbol generic conversion alias.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(in) :: self

The uom symbol.

class(uom_converter), intent(out), allocatable:: convert_

The symbol generic conversion alias.

private subroutine parse(self, source)

Parse symbol definition from string.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(inout) :: self

The uom symbol.

character(len=*), intent(in) :: source

Source input string definition of symbol.

private elemental subroutine set(self, symbol_, exponent_, factor_, offset_, convert_)

Set symbol.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(inout) :: self

The uom symbol.

character(len=*), intent(in), optional :: symbol_

literal symbol of the unit, e.g. "m" for metres.

integer(kind=IKP), intent(in), optional :: exponent_

Exponent of the symbol, e.g. "-1" for Hertz, namely "s-1".

real(kind=RKP), intent(in), optional :: factor_

Symbol multiplicative scale factor (used only for converters).

real(kind=RKP), intent(in), optional :: offset_

Symbol additive offset (used only for converters).

class(uom_converter), intent(in), optional :: convert_

Generic conversion alias formula user-supplied.

private elemental subroutine unset(self)

Unset symbol.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(inout) :: self

The uom symbol.

private pure subroutine assign_uom_symbol(lhs, rhs)

uom_symbol = uom_symbol assignment.

Arguments

Type IntentOptional AttributesName
class(uom_symbol), intent(inout) :: lhs

Left hand side.

type(uom_symbol), intent(in) :: rhs

Right hand side.