! Automatically generated by genunits.

! genunits output Fortran code is in the public domain.

module units

implicit none
private

public :: unit
public :: sin, cos, tan, exp, log, tanh, atanh
public :: abs
public :: min, max
public :: sqrt
public :: square

!use units, only: unitless           => unit_p00_p00_p00_p00, &
!                 si_length          => unit_p10_p00_p00_p00, &
!                 si_velocity        => unit_p10_p00_m10_p00, &
!                 si_area            => unit_p20_p00_p00_p00, &
!                 si_mass            => unit_p00_p10_p00_p00, &
!                 si_inverse_mass    => unit_p00_m10_p00_p00, &
!                 si_stiffness       => unit_p00_p10_m20_p00, &
!                 si_pressure        => unit_m10_p10_m20_p00, &
!                 si_mass_flow_rate  => unit_p00_p10_m10_p00, &
!                 si_energy          => unit_p20_p10_m20_p00, &
!                 si_specific_energy => unit_p20_p00_m20_p00, &
!                 si_specific_heat   => unit_p20_p00_m20_m10, &
!                 si_heat_capacity   => unit_p20_p10_m20_m10, &
!                 si_temperature     => unit_p00_p00_p00_p10, &
!                 si_mass_density    => unit_m30_p10_p00_p00, &
!                 si_time            => unit_p00_p00_p10_p00, &
!                 si_volume          => unit_p30_p00_p00_p00, &
!                 si_acceleration    => unit_p10_p00_m20_p00, &
!                 unit, sin, cos, tan, exp, log, tanh, atanh, abs, min, max, sqrt, square

type, public :: unit_p00_p00_p00_p00
    ! unit: 1
    real :: v
contains
    procedure, private :: a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(+) => a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: a_unit_p00_p00_p00_p00_real
    generic, public :: operator(+) => a_unit_p00_p00_p00_p00_real
    procedure, private, pass(right) :: a_real_unit_p00_p00_p00_p00
    generic, public :: operator(+) => a_real_unit_p00_p00_p00_p00
    procedure, private :: s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(-) => s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: s_unit_p00_p00_p00_p00_real
    generic, public :: operator(-) => s_unit_p00_p00_p00_p00_real
    procedure, private, pass(right) :: s_real_unit_p00_p00_p00_p00
    generic, public :: operator(-) => s_real_unit_p00_p00_p00_p00
    procedure, private :: lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(<) => lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private :: le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(<=) => le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private :: gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(>) => gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private :: ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private :: a_unit_p00_p00_p00_p00
    generic, public :: operator(+) => a_unit_p00_p00_p00_p00
    procedure, private :: s_unit_p00_p00_p00_p00
    generic, public :: operator(-) => s_unit_p00_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_p00_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_p00_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p00_p00_p00
    generic   :: write(formatted) => wf_unit_p00_p00_p00_p00
    procedure :: rf_unit_p00_p00_p00_p00
    generic   :: read(formatted) => rf_unit_p00_p00_p00_p00
end type unit_p00_p00_p00_p00

type, public :: unit_p10_p00_p00_p00
    ! unit: m
    real :: v
contains
    procedure, private :: a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(+) => a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(-) => s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(<) => lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(<=) => le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(>) => gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: a_unit_p10_p00_p00_p00
    generic, public :: operator(+) => a_unit_p10_p00_p00_p00
    procedure, private :: s_unit_p10_p00_p00_p00
    generic, public :: operator(-) => s_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p00_p00_p00
    generic   :: write(formatted) => wf_unit_p10_p00_p00_p00
    procedure :: rf_unit_p10_p00_p00_p00
    generic   :: read(formatted) => rf_unit_p10_p00_p00_p00
end type unit_p10_p00_p00_p00

type, public :: unit_p10_p00_m10_p00
    ! unit: m/s
    real :: v
contains
    procedure, private :: a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(+) => a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(-) => s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(<) => lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(<=) => le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(>) => gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(>=) => ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: a_unit_p10_p00_m10_p00
    generic, public :: operator(+) => a_unit_p10_p00_m10_p00
    procedure, private :: s_unit_p10_p00_m10_p00
    generic, public :: operator(-) => s_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p00_m10_p00_real
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_real_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p00_m10_p00_real
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_real
    procedure, private, pass(right) :: d_real_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_real_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_p00_m10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p00_m10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p00_m10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_p00_m10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p00_m10_p00
    generic   :: write(formatted) => wf_unit_p10_p00_m10_p00
    procedure :: rf_unit_p10_p00_m10_p00
    generic   :: read(formatted) => rf_unit_p10_p00_m10_p00
end type unit_p10_p00_m10_p00

type, public :: unit_p20_p00_p00_p00
    ! unit: m2
    real :: v
contains
    procedure, private :: a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(+) => a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(-) => s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(<) => lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(<=) => le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(>) => gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: a_unit_p20_p00_p00_p00
    generic, public :: operator(+) => a_unit_p20_p00_p00_p00
    procedure, private :: s_unit_p20_p00_p00_p00
    generic, public :: operator(-) => s_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p20_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p20_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p00_p00_p00
    generic   :: write(formatted) => wf_unit_p20_p00_p00_p00
    procedure :: rf_unit_p20_p00_p00_p00
    generic   :: read(formatted) => rf_unit_p20_p00_p00_p00
end type unit_p20_p00_p00_p00

type, public :: unit_p00_p10_p00_p00
    ! unit: kg
    real :: v
contains
    procedure, private :: a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(+) => a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(-) => s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(<) => lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(<=) => le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(>) => gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(>=) => ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: a_unit_p00_p10_p00_p00
    generic, public :: operator(+) => a_unit_p00_p10_p00_p00
    procedure, private :: s_unit_p00_p10_p00_p00
    generic, public :: operator(-) => s_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p10_p00_p00_real
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_real_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p10_p00_p00_real
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_real_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p10_p00_p00
    generic   :: write(formatted) => wf_unit_p00_p10_p00_p00
    procedure :: rf_unit_p00_p10_p00_p00
    generic   :: read(formatted) => rf_unit_p00_p10_p00_p00
end type unit_p00_p10_p00_p00

type, public :: unit_p00_m10_p00_p00
    ! unit: 1/kg
    real :: v
contains
    procedure, private :: a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(+) => a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(-) => s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(<) => lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(<=) => le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(>) => gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(>=) => ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: a_unit_p00_m10_p00_p00
    generic, public :: operator(+) => a_unit_p00_m10_p00_p00
    procedure, private :: s_unit_p00_m10_p00_p00
    generic, public :: operator(-) => s_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_m10_p00_p00_real
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_real_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_m10_p00_p00_real
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_real_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_m10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_m10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_m10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_m10_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_m10_p00_p00
    generic   :: write(formatted) => wf_unit_p00_m10_p00_p00
    procedure :: rf_unit_p00_m10_p00_p00
    generic   :: read(formatted) => rf_unit_p00_m10_p00_p00
end type unit_p00_m10_p00_p00

type, public :: unit_p00_p10_m20_p00
    ! unit: kg/s2
    real :: v
contains
    procedure, private :: a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(+) => a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(-) => s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(<) => lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(<=) => le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(>) => gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(>=) => ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: a_unit_p00_p10_m20_p00
    generic, public :: operator(+) => a_unit_p00_p10_m20_p00
    procedure, private :: s_unit_p00_p10_m20_p00
    generic, public :: operator(-) => s_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p10_m20_p00_real
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_real_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p10_m20_p00_real
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_real_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p10_m20_p00
    generic   :: write(formatted) => wf_unit_p00_p10_m20_p00
    procedure :: rf_unit_p00_p10_m20_p00
    generic   :: read(formatted) => rf_unit_p00_p10_m20_p00
end type unit_p00_p10_m20_p00

type, public :: unit_m10_p10_m20_p00
    ! unit: kg/m/s2
    real :: v
contains
    procedure, private :: a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(+) => a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(-) => s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(<) => lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(<=) => le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(>) => gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(>=) => ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: a_unit_m10_p10_m20_p00
    generic, public :: operator(+) => a_unit_m10_p10_m20_p00
    procedure, private :: s_unit_m10_p10_m20_p00
    generic, public :: operator(-) => s_unit_m10_p10_m20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_p10_m20_p00_real
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_real_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_p10_m20_p00_real
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_real_unit_m10_p10_m20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m10_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m10_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m10_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_p10_m20_p00
    generic   :: write(formatted) => wf_unit_m10_p10_m20_p00
    procedure :: rf_unit_m10_p10_m20_p00
    generic   :: read(formatted) => rf_unit_m10_p10_m20_p00
end type unit_m10_p10_m20_p00

type, public :: unit_p00_p10_m10_p00
    ! unit: kg/s
    real :: v
contains
    procedure, private :: a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(+) => a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(-) => s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(<) => lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(<=) => le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(>) => gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(>=) => ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: a_unit_p00_p10_m10_p00
    generic, public :: operator(+) => a_unit_p00_p10_m10_p00
    procedure, private :: s_unit_p00_p10_m10_p00
    generic, public :: operator(-) => s_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p10_m10_p00_real
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_real_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p10_m10_p00_real
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_real_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p10_m10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p10_m10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p10_m10_p00
    generic   :: write(formatted) => wf_unit_p00_p10_m10_p00
    procedure :: rf_unit_p00_p10_m10_p00
    generic   :: read(formatted) => rf_unit_p00_p10_m10_p00
end type unit_p00_p10_m10_p00

type, public :: unit_p20_p10_m20_p00
    ! unit: m2.kg/s2
    real :: v
contains
    procedure, private :: a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(+) => a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(-) => s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(<) => lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(<=) => le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(>) => gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(>=) => ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: a_unit_p20_p10_m20_p00
    generic, public :: operator(+) => a_unit_p20_p10_m20_p00
    procedure, private :: s_unit_p20_p10_m20_p00
    generic, public :: operator(-) => s_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p10_m20_p00_real
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_real_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p10_m20_p00_real
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_real_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p20_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p20_p10_m20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p10_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p10_m20_p00
    generic   :: write(formatted) => wf_unit_p20_p10_m20_p00
    procedure :: rf_unit_p20_p10_m20_p00
    generic   :: read(formatted) => rf_unit_p20_p10_m20_p00
end type unit_p20_p10_m20_p00

type, public :: unit_p20_p00_m20_p00
    ! unit: m2/s2
    real :: v
contains
    procedure, private :: a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(+) => a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(-) => s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(<) => lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(<=) => le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(>) => gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(>=) => ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: a_unit_p20_p00_m20_p00
    generic, public :: operator(+) => a_unit_p20_p00_m20_p00
    procedure, private :: s_unit_p20_p00_m20_p00
    generic, public :: operator(-) => s_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p00_m20_p00_real
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_real_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p00_m20_p00_real
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_real_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p00_m20_p00
    generic   :: write(formatted) => wf_unit_p20_p00_m20_p00
    procedure :: rf_unit_p20_p00_m20_p00
    generic   :: read(formatted) => rf_unit_p20_p00_m20_p00
end type unit_p20_p00_m20_p00

type, public :: unit_p20_p00_m20_m10
    ! unit: m2/s2/K
    real :: v
contains
    procedure, private :: a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(+) => a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(-) => s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(<) => lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(<=) => le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(>) => gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(>=) => ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: a_unit_p20_p00_m20_m10
    generic, public :: operator(+) => a_unit_p20_p00_m20_m10
    procedure, private :: s_unit_p20_p00_m20_m10
    generic, public :: operator(-) => s_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p00_m20_m10_real
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_real
    procedure, private, pass(right) :: m_real_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_real_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p00_m20_m10_real
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_real
    procedure, private, pass(right) :: d_real_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_real_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p20_p00_m20_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_m10_p10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p00_m20_m10_unit_p30_p10_m20_m10
    ! excluded: d_unit_p20_p00_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10
    procedure, private :: m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p20_p00_m20_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p00_m20_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p00_m20_m10
    generic   :: write(formatted) => wf_unit_p20_p00_m20_m10
    procedure :: rf_unit_p20_p00_m20_m10
    generic   :: read(formatted) => rf_unit_p20_p00_m20_m10
end type unit_p20_p00_m20_m10

type, public :: unit_p20_p10_m20_m10
    ! unit: m2.kg/s2/K
    real :: v
contains
    procedure, private :: a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(+) => a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(-) => s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(<) => lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(<=) => le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(>) => gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(>=) => ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: a_unit_p20_p10_m20_m10
    generic, public :: operator(+) => a_unit_p20_p10_m20_m10
    procedure, private :: s_unit_p20_p10_m20_m10
    generic, public :: operator(-) => s_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p10_m20_m10_real
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_real
    procedure, private, pass(right) :: m_real_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_real_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p10_m20_m10_real
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_real
    procedure, private, pass(right) :: d_real_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_real_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p00_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p20_p10_m20_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p00_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_p00_m20_m10
    ! excluded: d_unit_p20_p10_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10
    procedure, private :: m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p20_p10_m20_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p10_m20_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p10_m20_m10
    generic   :: write(formatted) => wf_unit_p20_p10_m20_m10
    procedure :: rf_unit_p20_p10_m20_m10
    generic   :: read(formatted) => rf_unit_p20_p10_m20_m10
end type unit_p20_p10_m20_m10

type, public :: unit_p00_p00_p00_p10
    ! unit: K
    real :: v
contains
    procedure, private :: a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(+) => a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(-) => s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(<) => lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(<=) => le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(>) => gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(>=) => ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: a_unit_p00_p00_p00_p10
    generic, public :: operator(+) => a_unit_p00_p00_p00_p10
    procedure, private :: s_unit_p00_p00_p00_p10
    generic, public :: operator(-) => s_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p00_p00_p10_real
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_real
    procedure, private, pass(right) :: m_real_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_real_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p00_p00_p10_real
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_real
    procedure, private, pass(right) :: d_real_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_real_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p00_p00_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_p00_p00_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_p10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p00_p00_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p00_p00_p10
    generic   :: write(formatted) => wf_unit_p00_p00_p00_p10
    procedure :: rf_unit_p00_p00_p00_p10
    generic   :: read(formatted) => rf_unit_p00_p00_p00_p10
end type unit_p00_p00_p00_p10

type, public :: unit_m30_p10_p00_p00
    ! unit: kg/m3
    real :: v
contains
    procedure, private :: a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(+) => a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(-) => s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(<) => lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(<=) => le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(>) => gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(>=) => ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: a_unit_m30_p10_p00_p00
    generic, public :: operator(+) => a_unit_m30_p10_p00_p00
    procedure, private :: s_unit_m30_p10_p00_p00
    generic, public :: operator(-) => s_unit_m30_p10_p00_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m30_p10_p00_p00_real
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_real_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m30_p10_p00_p00_real
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_real_unit_m30_p10_p00_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m30_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m30_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m30_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m30_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m30_p10_p00_p00
    generic   :: write(formatted) => wf_unit_m30_p10_p00_p00
    procedure :: rf_unit_m30_p10_p00_p00
    generic   :: read(formatted) => rf_unit_m30_p10_p00_p00
end type unit_m30_p10_p00_p00

type, public :: unit_p00_p00_p10_p00
    ! unit: s
    real :: v
contains
    procedure, private :: a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(+) => a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(-) => s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(<) => lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(<=) => le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(>) => gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(>=) => ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: a_unit_p00_p00_p10_p00
    generic, public :: operator(+) => a_unit_p00_p00_p10_p00
    procedure, private :: s_unit_p00_p00_p10_p00
    generic, public :: operator(-) => s_unit_p00_p00_p10_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p00_p10_p00_real
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_real_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p00_p10_p00_real
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_real_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p00_p10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p00_p10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p00_p10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_p00_p10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p00_p10_p00
    generic   :: write(formatted) => wf_unit_p00_p00_p10_p00
    procedure :: rf_unit_p00_p00_p10_p00
    generic   :: read(formatted) => rf_unit_p00_p00_p10_p00
end type unit_p00_p00_p10_p00

type, public :: unit_p30_p00_p00_p00
    ! unit: m3
    real :: v
contains
    procedure, private :: a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(+) => a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(-) => s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(<) => lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(<=) => le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(>) => gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: a_unit_p30_p00_p00_p00
    generic, public :: operator(+) => a_unit_p30_p00_p00_p00
    procedure, private :: s_unit_p30_p00_p00_p00
    generic, public :: operator(-) => s_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p30_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p30_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_p00_p00_p00
    generic   :: write(formatted) => wf_unit_p30_p00_p00_p00
    procedure :: rf_unit_p30_p00_p00_p00
    generic   :: read(formatted) => rf_unit_p30_p00_p00_p00
end type unit_p30_p00_p00_p00

type, public :: unit_p10_p00_m20_p00
    ! unit: m/s2
    real :: v
contains
    procedure, private :: a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(+) => a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(-) => s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(<) => lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(<=) => le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(>) => gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(>=) => ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: a_unit_p10_p00_m20_p00
    generic, public :: operator(+) => a_unit_p10_p00_m20_p00
    procedure, private :: s_unit_p10_p00_m20_p00
    generic, public :: operator(-) => s_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p00_m20_p00_real
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_real_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p00_m20_p00_real
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_real_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p00_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_p00_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p00_m20_p00
    generic   :: write(formatted) => wf_unit_p10_p00_m20_p00
    procedure :: rf_unit_p10_p00_m20_p00
    generic   :: read(formatted) => rf_unit_p10_p00_m20_p00
end type unit_p10_p00_m20_p00

type, public :: unit_m10_p00_p00_p00
    ! unit: 1/m
    real :: v
contains
    procedure, private :: a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(+) => a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(-) => s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(<) => lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(<=) => le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(>) => gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: a_unit_m10_p00_p00_p00
    generic, public :: operator(+) => a_unit_m10_p00_p00_p00
    procedure, private :: s_unit_m10_p00_p00_p00
    generic, public :: operator(-) => s_unit_m10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_m10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m10_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_m10_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_p00_p00_p00
    generic   :: write(formatted) => wf_unit_m10_p00_p00_p00
    procedure :: rf_unit_m10_p00_p00_p00
    generic   :: read(formatted) => rf_unit_m10_p00_p00_p00
end type unit_m10_p00_p00_p00

type, public :: unit_m10_p00_p10_p00
    ! unit: s/m
    real :: v
contains
    procedure, private :: a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(+) => a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(-) => s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(<) => lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(<=) => le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(>) => gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(>=) => ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: a_unit_m10_p00_p10_p00
    generic, public :: operator(+) => a_unit_m10_p00_p10_p00
    procedure, private :: s_unit_m10_p00_p10_p00
    generic, public :: operator(-) => s_unit_m10_p00_p10_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_p00_p10_p00_real
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_real
    procedure, private, pass(right) :: m_real_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_real_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_p00_p10_p00_real
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_real
    procedure, private, pass(right) :: d_real_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_real_unit_m10_p00_p10_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m10_p00_p10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m10_p00_p10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m10_p00_p10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_p00_p10_p00
    generic   :: write(formatted) => wf_unit_m10_p00_p10_p00
    procedure :: rf_unit_m10_p00_p10_p00
    generic   :: read(formatted) => rf_unit_m10_p00_p10_p00
end type unit_m10_p00_p10_p00

type, public :: unit_m20_p00_p00_p00
    ! unit: 1/m2
    real :: v
contains
    procedure, private :: a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(+) => a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(-) => s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(<) => lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(<=) => le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(>) => gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: a_unit_m20_p00_p00_p00
    generic, public :: operator(+) => a_unit_m20_p00_p00_p00
    procedure, private :: s_unit_m20_p00_p00_p00
    generic, public :: operator(-) => s_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m20_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m20_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_p00_p00_p00
    generic   :: write(formatted) => wf_unit_m20_p00_p00_p00
    procedure :: rf_unit_m20_p00_p00_p00
    generic   :: read(formatted) => rf_unit_m20_p00_p00_p00
end type unit_m20_p00_p00_p00

type, public :: unit_p00_m10_p20_p00
    ! unit: s2/kg
    real :: v
contains
    procedure, private :: a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(+) => a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(-) => s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(<) => lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(<=) => le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(>) => gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(>=) => ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: a_unit_p00_m10_p20_p00
    generic, public :: operator(+) => a_unit_p00_m10_p20_p00
    procedure, private :: s_unit_p00_m10_p20_p00
    generic, public :: operator(-) => s_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_m10_p20_p00_real
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_real_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_m10_p20_p00_real
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_real_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_m10_p20_p00
    generic   :: write(formatted) => wf_unit_p00_m10_p20_p00
    procedure :: rf_unit_p00_m10_p20_p00
    generic   :: read(formatted) => rf_unit_p00_m10_p20_p00
end type unit_p00_m10_p20_p00

type, public :: unit_p10_m10_p20_p00
    ! unit: m.s2/kg
    real :: v
contains
    procedure, private :: a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(+) => a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(-) => s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(<) => lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(<=) => le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(>) => gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(>=) => ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: a_unit_p10_m10_p20_p00
    generic, public :: operator(+) => a_unit_p10_m10_p20_p00
    procedure, private :: s_unit_p10_m10_p20_p00
    generic, public :: operator(-) => s_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_m10_p20_p00_real
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_real_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_m10_p20_p00_real
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_real_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_m10_p20_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_m10_p20_p00
    generic   :: write(formatted) => wf_unit_p10_m10_p20_p00
    procedure :: rf_unit_p10_m10_p20_p00
    generic   :: read(formatted) => rf_unit_p10_m10_p20_p00
end type unit_p10_m10_p20_p00

type, public :: unit_p00_m10_p10_p00
    ! unit: s/kg
    real :: v
contains
    procedure, private :: a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(+) => a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(-) => s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(<) => lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(<=) => le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(>) => gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(>=) => ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: a_unit_p00_m10_p10_p00
    generic, public :: operator(+) => a_unit_p00_m10_p10_p00
    procedure, private :: s_unit_p00_m10_p10_p00
    generic, public :: operator(-) => s_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_m10_p10_p00_real
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_real_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_m10_p10_p00_real
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_real_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_m10_p10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_m10_p10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_m10_p10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_m10_p10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_m10_p10_p00
    generic   :: write(formatted) => wf_unit_p00_m10_p10_p00
    procedure :: rf_unit_p00_m10_p10_p00
    generic   :: read(formatted) => rf_unit_p00_m10_p10_p00
end type unit_p00_m10_p10_p00

type, public :: unit_m20_m10_p20_p00
    ! unit: s2/m2/kg
    real :: v
contains
    procedure, private :: a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(+) => a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(-) => s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(<) => lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(<=) => le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(>) => gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(>=) => ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: a_unit_m20_m10_p20_p00
    generic, public :: operator(+) => a_unit_m20_m10_p20_p00
    procedure, private :: s_unit_m20_m10_p20_p00
    generic, public :: operator(-) => s_unit_m20_m10_p20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_m10_p20_p00_real
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_real_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_m10_p20_p00_real
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_real_unit_m20_m10_p20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_m20_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m20_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m20_m10_p20_p00_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m20_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_m10_p20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_m10_p20_p00
    generic   :: write(formatted) => wf_unit_m20_m10_p20_p00
    procedure :: rf_unit_m20_m10_p20_p00
    generic   :: read(formatted) => rf_unit_m20_m10_p20_p00
end type unit_m20_m10_p20_p00

type, public :: unit_m20_p00_p20_p00
    ! unit: s2/m2
    real :: v
contains
    procedure, private :: a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(+) => a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(-) => s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(<) => lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(<=) => le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(>) => gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(>=) => ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: a_unit_m20_p00_p20_p00
    generic, public :: operator(+) => a_unit_m20_p00_p20_p00
    procedure, private :: s_unit_m20_p00_p20_p00
    generic, public :: operator(-) => s_unit_m20_p00_p20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_p00_p20_p00_real
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_real_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_p00_p20_p00_real
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_real_unit_m20_p00_p20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m20_p00_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m20_p00_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_p00_p20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m20_p00_p20_p00_unit_m10_m10_p20_p10
    procedure, private :: m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m20_p00_p20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_p00_p20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_p00_p20_p00
    generic   :: write(formatted) => wf_unit_m20_p00_p20_p00
    procedure :: rf_unit_m20_p00_p20_p00
    generic   :: read(formatted) => rf_unit_m20_p00_p20_p00
end type unit_m20_p00_p20_p00

type, public :: unit_m20_p00_p20_p10
    ! unit: s2.K/m2
    real :: v
contains
    procedure, private :: a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(+) => a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(-) => s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(<) => lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(<=) => le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(>) => gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(>=) => ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: a_unit_m20_p00_p20_p10
    generic, public :: operator(+) => a_unit_m20_p00_p20_p10
    procedure, private :: s_unit_m20_p00_p20_p10
    generic, public :: operator(-) => s_unit_m20_p00_p20_p10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_p00_p20_p10_real
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_real
    procedure, private, pass(right) :: m_real_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_real_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_p00_p20_p10_real
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_real
    procedure, private, pass(right) :: d_real_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_real_unit_m20_p00_p20_p10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_p10_m10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_p00_p20_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p00_m20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_m20_p00_p20_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_p00_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_p00_m10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_m10_p10_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_m10_p20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_p00_p20_p10_unit_m10_m10_p20_p10
    ! excluded: d_unit_m20_p00_p20_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p00_p00_p10
    procedure, private :: m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_p00_p20_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_m20_p00_p20_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_p00_p20_p10
    generic   :: write(formatted) => wf_unit_m20_p00_p20_p10
    procedure :: rf_unit_m20_p00_p20_p10
    generic   :: read(formatted) => rf_unit_m20_p00_p20_p10
end type unit_m20_p00_p20_p10

type, public :: unit_m20_m10_p20_p10
    ! unit: s2.K/m2/kg
    real :: v
contains
    procedure, private :: a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(+) => a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(-) => s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(<) => lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(<=) => le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(>) => gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(>=) => ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: a_unit_m20_m10_p20_p10
    generic, public :: operator(+) => a_unit_m20_m10_p20_p10
    procedure, private :: s_unit_m20_m10_p20_p10
    generic, public :: operator(-) => s_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_m10_p20_p10_real
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_real
    procedure, private, pass(right) :: m_real_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_real_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_m10_p20_p10_real
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_real
    procedure, private, pass(right) :: d_real_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_real_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_m10_p20_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p00_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_p00_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_m20_m10_p20_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_p00_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_p00_m10_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_m10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_m10_p00_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_m10_p20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p00
    ! excluded: m_unit_m20_m10_p20_p10_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_p00_m20_p00
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_p00_p20_p10
    ! excluded: d_unit_m20_m10_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p00_p00_p10
    procedure, private :: m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_m10_p20_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_m20_m10_p20_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_m10_p20_p10
    generic   :: write(formatted) => wf_unit_m20_m10_p20_p10
    procedure :: rf_unit_m20_m10_p20_p10
    generic   :: read(formatted) => rf_unit_m20_m10_p20_p10
end type unit_m20_m10_p20_p10

type, public :: unit_p00_p00_p00_m10
    ! unit: 1/K
    real :: v
contains
    procedure, private :: a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(+) => a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(-) => s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(<) => lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(<=) => le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(>) => gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(>=) => ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: a_unit_p00_p00_p00_m10
    generic, public :: operator(+) => a_unit_p00_p00_p00_m10
    procedure, private :: s_unit_p00_p00_p00_m10
    generic, public :: operator(-) => s_unit_p00_p00_p00_m10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p00_p00_m10_real
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_real
    procedure, private, pass(right) :: m_real_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_real_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p00_p00_m10_real
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_real
    procedure, private, pass(right) :: d_real_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_real_unit_p00_p00_p00_m10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p00_p00_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_p00_p00_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_m10_p10_p00
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_m10_p20_p00
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_p00_p00_m10_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p00_p00_m10_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p00_p00_m10_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10
    procedure, private :: m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p00_p00_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_p00_p00_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p00_p00_m10
    generic   :: write(formatted) => wf_unit_p00_p00_p00_m10
    procedure :: rf_unit_p00_p00_p00_m10
    generic   :: read(formatted) => rf_unit_p00_p00_p00_m10
end type unit_p00_p00_p00_m10

type, public :: unit_p30_m10_p00_p00
    ! unit: m3/kg
    real :: v
contains
    procedure, private :: a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(+) => a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(-) => s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(<) => lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(<=) => le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(>) => gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(>=) => ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: a_unit_p30_m10_p00_p00
    generic, public :: operator(+) => a_unit_p30_m10_p00_p00
    procedure, private :: s_unit_p30_m10_p00_p00
    generic, public :: operator(-) => s_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_m10_p00_p00_real
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_real_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_m10_p00_p00_real
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_real_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p30_m10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p30_m10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_m10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p30_m10_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_m10_p00_p00
    generic   :: write(formatted) => wf_unit_p30_m10_p00_p00
    procedure :: rf_unit_p30_m10_p00_p00
    generic   :: read(formatted) => rf_unit_p30_m10_p00_p00
end type unit_p30_m10_p00_p00

type, public :: unit_p00_p00_m10_p00
    ! unit: 1/s
    real :: v
contains
    procedure, private :: a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(+) => a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(-) => s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(<) => lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(<=) => le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(>) => gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(>=) => ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: a_unit_p00_p00_m10_p00
    generic, public :: operator(+) => a_unit_p00_p00_m10_p00
    procedure, private :: s_unit_p00_p00_m10_p00
    generic, public :: operator(-) => s_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p00_p00_m10_p00_real
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_real
    procedure, private, pass(right) :: m_real_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_real_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p00_p00_m10_p00_real
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_real
    procedure, private, pass(right) :: d_real_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_real_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p00_p00_m10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p00_p00_m10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p00_p00_m10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p00_p00_m10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p00_p00_m10_p00
    generic   :: write(formatted) => wf_unit_p00_p00_m10_p00
    procedure :: rf_unit_p00_p00_m10_p00
    generic   :: read(formatted) => rf_unit_p00_p00_m10_p00
end type unit_p00_p00_m10_p00

type, public :: unit_m30_p00_p00_p00
    ! unit: 1/m3
    real :: v
contains
    procedure, private :: a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(+) => a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(-) => s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(<) => lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(<=) => le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(>) => gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(>=) => ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: a_unit_m30_p00_p00_p00
    generic, public :: operator(+) => a_unit_m30_p00_p00_p00
    procedure, private :: s_unit_m30_p00_p00_p00
    generic, public :: operator(-) => s_unit_m30_p00_p00_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m30_p00_p00_p00_real
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_real_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m30_p00_p00_p00_real
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_real
    procedure, private, pass(right) :: d_real_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_real_unit_m30_p00_p00_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p00_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m30_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m30_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m30_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m30_p00_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m30_p00_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_m30_p00_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m30_p00_p00_p00
    generic   :: write(formatted) => wf_unit_m30_p00_p00_p00
    procedure :: rf_unit_m30_p00_p00_p00
    generic   :: read(formatted) => rf_unit_m30_p00_p00_p00
end type unit_m30_p00_p00_p00

type, public :: unit_m10_p00_p20_p00
    ! unit: s2/m
    real :: v
contains
    procedure, private :: a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(+) => a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(-) => s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(<) => lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(<=) => le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(>) => gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(>=) => ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: a_unit_m10_p00_p20_p00
    generic, public :: operator(+) => a_unit_m10_p00_p20_p00
    procedure, private :: s_unit_m10_p00_p20_p00
    generic, public :: operator(-) => s_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_p00_p20_p00_real
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_real_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_p00_p20_p00_real
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_real_unit_m10_p00_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m10_p00_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m10_p00_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_p00_p20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10
    procedure, private :: d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_p00_p20_p00
    generic   :: write(formatted) => wf_unit_m10_p00_p20_p00
    procedure :: rf_unit_m10_p00_p20_p00
    generic   :: read(formatted) => rf_unit_m10_p00_p20_p00
end type unit_m10_p00_p20_p00

type, public :: unit_p20_p00_m10_p00
    ! unit: m2/s
    real :: v
contains
    procedure, private :: a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(+) => a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(-) => s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(<) => lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(<=) => le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(>) => gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(>=) => ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: a_unit_p20_p00_m10_p00
    generic, public :: operator(+) => a_unit_p20_p00_m10_p00
    procedure, private :: s_unit_p20_p00_m10_p00
    generic, public :: operator(-) => s_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_p00_m10_p00_real
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_real
    procedure, private, pass(right) :: m_real_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_real_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_p00_m10_p00_real
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_real
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p20_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p20_p00_m10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p20_p00_m10_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_p00_m10_p00
    generic   :: write(formatted) => wf_unit_p20_p00_m10_p00
    procedure :: rf_unit_p20_p00_m10_p00
    generic   :: read(formatted) => rf_unit_p20_p00_m10_p00
end type unit_p20_p00_m10_p00

type, public :: unit_p10_p10_p00_p00
    ! unit: m.kg
    real :: v
contains
    procedure, private :: a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(+) => a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(-) => s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(<) => lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(<=) => le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(>) => gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(>=) => ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: a_unit_p10_p10_p00_p00
    generic, public :: operator(+) => a_unit_p10_p10_p00_p00
    procedure, private :: s_unit_p10_p10_p00_p00
    generic, public :: operator(-) => s_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p10_p00_p00_real
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_real_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p10_p00_p00_real
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_real
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10
    procedure, private :: d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p10_p00_p00
    generic   :: write(formatted) => wf_unit_p10_p10_p00_p00
    procedure :: rf_unit_p10_p10_p00_p00
    generic   :: read(formatted) => rf_unit_p10_p10_p00_p00
end type unit_p10_p10_p00_p00

type, public :: unit_p10_m10_p00_p00
    ! unit: m/kg
    real :: v
contains
    procedure, private :: a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(+) => a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(-) => s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(<) => lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(<=) => le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(>) => gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(>=) => ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: a_unit_p10_m10_p00_p00
    generic, public :: operator(+) => a_unit_p10_m10_p00_p00
    procedure, private :: s_unit_p10_m10_p00_p00
    generic, public :: operator(-) => s_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_m10_p00_p00_real
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_real_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_m10_p00_p00_real
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_real
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p20_p00_m10_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_m10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_m10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_m10_p00_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_m10_p00_p00
    generic   :: write(formatted) => wf_unit_p10_m10_p00_p00
    procedure :: rf_unit_p10_m10_p00_p00
    generic   :: read(formatted) => rf_unit_p10_m10_p00_p00
end type unit_p10_m10_p00_p00

type, public :: unit_p10_p10_m20_p00
    ! unit: m.kg/s2
    real :: v
contains
    procedure, private :: a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(+) => a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(-) => s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(<) => lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(<=) => le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(>) => gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(>=) => ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: a_unit_p10_p10_m20_p00
    generic, public :: operator(+) => a_unit_p10_p10_m20_p00
    procedure, private :: s_unit_p10_p10_m20_p00
    generic, public :: operator(-) => s_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p10_m20_p00_real
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_real_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p10_m20_p00_real
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_real
    procedure, private, pass(right) :: d_real_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_real_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p10_m20_p00
    generic   :: write(formatted) => wf_unit_p10_p10_m20_p00
    procedure :: rf_unit_p10_p10_m20_p00
    generic   :: read(formatted) => rf_unit_p10_p10_m20_p00
end type unit_p10_p10_m20_p00

type, public :: unit_p20_m10_p20_p00
    ! unit: m2.s2/kg
    real :: v
contains
    procedure, private :: a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(+) => a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(-) => s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(<) => lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(<=) => le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(>) => gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(>=) => ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: a_unit_p20_m10_p20_p00
    generic, public :: operator(+) => a_unit_p20_m10_p20_p00
    procedure, private :: s_unit_p20_m10_p20_p00
    generic, public :: operator(-) => s_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p20_m10_p20_p00_real
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_p20_m10_p20_p00
    generic, public :: operator(*) => m_real_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p20_m10_p20_p00_real
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_real
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p20_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p20_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p20_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p20_m10_p20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p20_m10_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p20_m10_p20_p00
    generic   :: write(formatted) => wf_unit_p20_m10_p20_p00
    procedure :: rf_unit_p20_m10_p20_p00
    generic   :: read(formatted) => rf_unit_p20_m10_p20_p00
end type unit_p20_m10_p20_p00

type, public :: unit_p10_p10_m10_p00
    ! unit: m.kg/s
    real :: v
contains
    procedure, private :: a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(+) => a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(-) => s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(<) => lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(<=) => le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(>) => gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(>=) => ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: a_unit_p10_p10_m10_p00
    generic, public :: operator(+) => a_unit_p10_p10_m10_p00
    procedure, private :: s_unit_p10_p10_m10_p00
    generic, public :: operator(-) => s_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p10_m10_p00_real
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_real_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p10_m10_p00_real
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_real
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_m10_p20_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_p10_m10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p10_m10_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p10_m10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_p10_m10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p10_m10_p00
    generic   :: write(formatted) => wf_unit_p10_p10_m10_p00
    procedure :: rf_unit_p10_p10_m10_p00
    generic   :: read(formatted) => rf_unit_p10_p10_m10_p00
end type unit_p10_p10_m10_p00

type, public :: unit_p10_m10_p10_p00
    ! unit: m.s/kg
    real :: v
contains
    procedure, private :: a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(+) => a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(-) => s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(<) => lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(<=) => le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(>) => gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(>=) => ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: a_unit_p10_m10_p10_p00
    generic, public :: operator(+) => a_unit_p10_m10_p10_p00
    procedure, private :: s_unit_p10_m10_p10_p00
    generic, public :: operator(-) => s_unit_p10_m10_p10_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_m10_p10_p00_real
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_real
    procedure, private, pass(right) :: m_real_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_real_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_m10_p10_p00_real
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_real
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m30_p10_p00_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_m10_p10_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_m10_p10_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_m10_p10_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_m10_p10_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_m10_p10_p00
    generic   :: write(formatted) => wf_unit_p10_m10_p10_p00
    procedure :: rf_unit_p10_m10_p10_p00
    generic   :: read(formatted) => rf_unit_p10_m10_p10_p00
end type unit_p10_m10_p10_p00

type, public :: unit_p30_p10_m20_p00
    ! unit: m3.kg/s2
    real :: v
contains
    procedure, private :: a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(+) => a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(-) => s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(<) => lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(<=) => le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(>) => gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(>=) => ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: a_unit_p30_p10_m20_p00
    generic, public :: operator(+) => a_unit_p30_p10_m20_p00
    procedure, private :: s_unit_p30_p10_m20_p00
    generic, public :: operator(-) => s_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_p10_m20_p00_real
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_real_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_p10_m20_p00_real
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_real
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_p30_p10_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_p30_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p00_p00_m10_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_p30_p10_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_p10_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p30_p10_m20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_p30_p10_m20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_p10_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_p10_m20_p00
    generic   :: write(formatted) => wf_unit_p30_p10_m20_p00
    procedure :: rf_unit_p30_p10_m20_p00
    generic   :: read(formatted) => rf_unit_p30_p10_m20_p00
end type unit_p30_p10_m20_p00

type, public :: unit_m10_m10_p20_p00
    ! unit: s2/m/kg
    real :: v
contains
    procedure, private :: a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(+) => a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(-) => s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(<) => lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(<=) => le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(>) => gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(>=) => ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: a_unit_m10_m10_p20_p00
    generic, public :: operator(+) => a_unit_m10_m10_p20_p00
    procedure, private :: s_unit_m10_m10_p20_p00
    generic, public :: operator(-) => s_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_m10_p20_p00_real
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_real
    procedure, private, pass(right) :: m_real_unit_m10_m10_p20_p00
    generic, public :: operator(*) => m_real_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_m10_p20_p00_real
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_real
    procedure, private, pass(right) :: d_real_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_real_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_m10_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_m10_p10_p00
    procedure, private :: m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m10_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10
    procedure, private :: d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_m10_p20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_m10_p20_p00
    generic   :: write(formatted) => wf_unit_m10_m10_p20_p00
    procedure :: rf_unit_m10_m10_p20_p00
    generic   :: read(formatted) => rf_unit_m10_m10_p20_p00
end type unit_m10_m10_p20_p00

type, public :: unit_p30_p00_m20_p00
    ! unit: m3/s2
    real :: v
contains
    procedure, private :: a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(+) => a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(-) => s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(<) => lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(<=) => le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(>) => gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(>=) => ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: a_unit_p30_p00_m20_p00
    generic, public :: operator(+) => a_unit_p30_p00_m20_p00
    procedure, private :: s_unit_p30_p00_m20_p00
    generic, public :: operator(-) => s_unit_p30_p00_m20_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_p00_m20_p00_real
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_real
    procedure, private, pass(right) :: m_real_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_real_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_p00_m20_p00_real
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_real
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_p30_p00_m20_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m30_p00_p00_p00
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_p30_p00_m20_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_p30_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_p00_m20_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_p00_m20_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_p30_p00_m20_p00_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_p00_m20_p00
    generic   :: write(formatted) => wf_unit_p30_p00_m20_p00
    procedure :: rf_unit_p30_p00_m20_p00
    generic   :: read(formatted) => rf_unit_p30_p00_m20_p00
end type unit_p30_p00_m20_p00

type, public :: unit_p30_p00_m20_m10
    ! unit: m3/s2/K
    real :: v
contains
    procedure, private :: a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(+) => a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(-) => s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(<) => lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(<=) => le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(>) => gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(>=) => ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: a_unit_p30_p00_m20_m10
    generic, public :: operator(+) => a_unit_p30_p00_m20_m10
    procedure, private :: s_unit_p30_p00_m20_m10
    generic, public :: operator(-) => s_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_p00_m20_m10_real
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_real
    procedure, private, pass(right) :: m_real_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_real_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_p00_m20_m10_real
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_real
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p20_p00_p00_p00
    procedure, private :: m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p30_p00_m20_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_m10_p10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10
    ! excluded: m_unit_p30_p00_m20_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p30_p00_m20_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_p00_m20_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_p00_m20_m10
    generic   :: write(formatted) => wf_unit_p30_p00_m20_m10
    procedure :: rf_unit_p30_p00_m20_m10
    generic   :: read(formatted) => rf_unit_p30_p00_m20_m10
end type unit_p30_p00_m20_m10

type, public :: unit_m10_p00_p20_p10
    ! unit: s2.K/m
    real :: v
contains
    procedure, private :: a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(+) => a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(-) => s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(<) => lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(<=) => le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(>) => gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(>=) => ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: a_unit_m10_p00_p20_p10
    generic, public :: operator(+) => a_unit_m10_p00_p20_p10
    procedure, private :: s_unit_m10_p00_p20_p10
    generic, public :: operator(-) => s_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_p00_p20_p10_real
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_real
    procedure, private, pass(right) :: m_real_unit_m10_p00_p20_p10
    generic, public :: operator(*) => m_real_unit_m10_p00_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_p00_p20_p10_real
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_real
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_p10_m10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_p00_p20_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_m10_p00_p20_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m30_p00_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_m10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_m10_p00_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_m10_p10_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_p10_m20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_m10_p20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p00
    ! excluded: m_unit_m10_p00_p20_p10_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_p00_m20_p00
    procedure, private :: m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10
    generic, public :: operator(*) => m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    ! excluded: m_unit_m10_p00_p20_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10
    procedure, private :: d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10
    ! excluded: m_unit_m10_p00_p20_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_m10_p00_p20_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_p00_p20_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_m10_p00_p20_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_p00_p20_p10
    generic   :: write(formatted) => wf_unit_m10_p00_p20_p10
    procedure :: rf_unit_m10_p00_p20_p10
    generic   :: read(formatted) => rf_unit_m10_p00_p20_p10
end type unit_m10_p00_p20_p10

type, public :: unit_p30_p10_m20_m10
    ! unit: m3.kg/s2/K
    real :: v
contains
    procedure, private :: a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(+) => a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(-) => s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(<) => lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(<=) => le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(>) => gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(>=) => ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: a_unit_p30_p10_m20_m10
    generic, public :: operator(+) => a_unit_p30_p10_m20_m10
    procedure, private :: s_unit_p30_p10_m20_m10
    generic, public :: operator(-) => s_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p30_p10_m20_m10_real
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_real
    procedure, private, pass(right) :: m_real_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_real_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p30_p10_m20_m10_real
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_real
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00
    procedure, private :: m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p00_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p30_p10_m20_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10
    ! excluded: m_unit_p30_p10_m20_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p30_p10_m20_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p30_p10_m20_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p30_p10_m20_m10
    generic   :: write(formatted) => wf_unit_p30_p10_m20_m10
    procedure :: rf_unit_p30_p10_m20_m10
    generic   :: read(formatted) => rf_unit_p30_p10_m20_m10
end type unit_p30_p10_m20_m10

type, public :: unit_m10_m10_p20_p10
    ! unit: s2.K/m/kg
    real :: v
contains
    procedure, private :: a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(+) => a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(-) => s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(<) => lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(<=) => le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(>) => gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(>=) => ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: a_unit_m10_m10_p20_p10
    generic, public :: operator(+) => a_unit_m10_m10_p20_p10
    procedure, private :: s_unit_m10_m10_p20_p10
    generic, public :: operator(-) => s_unit_m10_m10_p20_p10
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m10_m10_p20_p10_real
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_real
    procedure, private, pass(right) :: m_real_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_real_unit_m10_m10_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m10_m10_p20_p10_real
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_real
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p00_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p10_m10_p00
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p20_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_m10_m10_p20_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_m10_p10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_p00_p20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_m10_m10_p20_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m30_p00_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_p00_p20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_p00_m10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p10_p00_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_m10_p10_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p30_p10_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_p10_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p30_p00_m20_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_p00_m20_p00
    ! excluded: m_unit_m10_m10_p20_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10
    procedure, private :: d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10
    procedure, private :: m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_m10_m10_p20_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_m10_m10_p20_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_m10_m10_p20_p10
    generic   :: write(formatted) => wf_unit_m10_m10_p20_p10
    procedure :: rf_unit_m10_m10_p20_p10
    generic   :: read(formatted) => rf_unit_m10_m10_p20_p10
end type unit_m10_m10_p20_p10

type, public :: unit_p10_p00_p00_p10
    ! unit: m.K
    real :: v
contains
    procedure, private :: a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(+) => a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(-) => s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(<) => lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(<=) => le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(>) => gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(>=) => ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: a_unit_p10_p00_p00_p10
    generic, public :: operator(+) => a_unit_p10_p00_p00_p10
    procedure, private :: s_unit_p10_p00_p00_p10
    generic, public :: operator(-) => s_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p00_p00_p10_real
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_real
    procedure, private, pass(right) :: m_real_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_real_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p00_p00_p10_real
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_real
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p10_m10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10
    procedure, private :: m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p00_p00_p10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p30_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_m10_p10_p00
    procedure, private :: m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00
    procedure, private :: m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10
    ! excluded: m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10
    procedure, private :: m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_p00_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_m10_p00_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_p00_m20_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p00_p00_p10_unit_p30_p10_m20_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p30_p10_m20_m10
    ! excluded: m_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10
    ! excluded: m_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    generic, public :: operator(/) => d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    procedure, private :: m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10
    ! excluded: d_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_p10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_p10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p00_p00_p10
    generic   :: write(formatted) => wf_unit_p10_p00_p00_p10
    procedure :: rf_unit_p10_p00_p00_p10
    generic   :: read(formatted) => rf_unit_p10_p00_p00_p10
end type unit_p10_p00_p00_p10

type, public :: unit_p10_p00_p00_m10
    ! unit: m/K
    real :: v
contains
    procedure, private :: a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(+) => a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(-) => s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(<) => lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(<=) => le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(>) => gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(>=) => ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: a_unit_p10_p00_p00_m10
    generic, public :: operator(+) => a_unit_p10_p00_p00_m10
    procedure, private :: s_unit_p10_p00_p00_m10
    generic, public :: operator(-) => s_unit_p10_p00_p00_m10
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_p10_p00_p00_m10_real
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_real
    procedure, private, pass(right) :: m_real_unit_p10_p00_p00_m10
    generic, public :: operator(*) => m_real_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_p10_p00_p00_m10_real
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_real
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p20_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p20_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_m10_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m10_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m10_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p10_m10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p10_m10_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10
    ! excluded: m_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10
    ! excluded: m_unit_p10_p00_p00_m10_unit_m30_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m30_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p00_p10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p00_p10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p30_p00_p00_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m10_p00_p10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m10_p00_p10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m20_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m20_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_m10_p10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_m10_p10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00
    procedure, private :: d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10
    procedure, private :: m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p30_m10_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p00_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p00_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m30_p00_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m30_p00_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00
    procedure, private :: d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p20_p00_m10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p20_p00_m10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p10_p00_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_m10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_m10_p00_p00
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p20_m10_p20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p20_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_p10_m10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p10_m10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_m10_p10_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_m10_p10_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_p10_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p30_p10_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00
    procedure, private :: d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_p00_m20_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_p30_p00_m20_p00
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10
    ! excluded: m_unit_p10_p00_p00_m10_unit_m10_p00_p20_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p10
    ! excluded: m_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10
    procedure, private :: m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10
    procedure, private :: m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10
    generic, public :: operator(*) => m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10
    ! excluded: d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10
    ! excluded: m_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    procedure, private :: d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    generic, public :: operator(/) => d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    ! excluded: m_unit_p10_p00_p00_m10_unit_m20_p10_p00_p00
    ! excluded: d_unit_p10_p00_p00_m10_unit_m20_p10_p00_p00
    procedure :: wf_unit_p10_p00_p00_m10
    generic   :: write(formatted) => wf_unit_p10_p00_p00_m10
    procedure :: rf_unit_p10_p00_p00_m10
    generic   :: read(formatted) => rf_unit_p10_p00_p00_m10
end type unit_p10_p00_p00_m10

type, public :: unit_m20_p10_p00_p00
    ! unit: kg/m2
    real :: v
contains
    procedure, private :: a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(+) => a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(-) => s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(<) => lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(<=) => le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(>) => gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(>=) => ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: a_unit_m20_p10_p00_p00
    generic, public :: operator(+) => a_unit_m20_p10_p00_p00
    procedure, private :: s_unit_m20_p10_p00_p00
    generic, public :: operator(-) => s_unit_m20_p10_p00_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: m_unit_m20_p10_p00_p00_real
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_real
    procedure, private, pass(right) :: m_real_unit_m20_p10_p00_p00
    generic, public :: operator(*) => m_real_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    procedure, private, pass(left) :: d_unit_m20_p10_p00_p00_real
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_real
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p00_m10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p00_m10_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_p10_m10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p20_p10_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p10_m20_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p00_m20_m10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p10_m20_m10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p00_p10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_p00_p10_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_m10_p00_p10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_m10_p10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_m20_m10_p20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_m20_m10_p20_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p00_p00_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_p00_p00_m10
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p00_p00_m10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p10_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p20_m10_p20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p10_m10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p10_m10_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_p10_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_m10_p20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_m10_m10_p20_p00
    procedure, private :: m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00
    generic, public :: operator(*) => m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00
    ! excluded: m_unit_m20_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_p00_m20_m10
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p30_p10_m20_m10
    ! excluded: m_unit_m20_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_m10_m10_p20_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p10
    ! excluded: m_unit_m20_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: d_unit_m20_p10_p00_p00_unit_p10_p00_p00_m10
    ! excluded: m_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure, private :: d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    generic, public :: operator(/) => d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    procedure :: wf_unit_m20_p10_p00_p00
    generic   :: write(formatted) => wf_unit_m20_p10_p00_p00
    procedure :: rf_unit_m20_p10_p00_p00
    generic   :: read(formatted) => rf_unit_m20_p10_p00_p00
end type unit_m20_p10_p00_p00

interface sqrt
    module procedure sqrt_unit_p00_p00_p00_p00
    ! excluded: sqrt_unit_p10_p00_p00_p00
    ! excluded: sqrt_unit_p10_p00_m10_p00
    module procedure sqrt_unit_p20_p00_p00_p00
    ! excluded: sqrt_unit_p00_p10_p00_p00
    ! excluded: sqrt_unit_p00_m10_p00_p00
    ! excluded: sqrt_unit_p00_p10_m20_p00
    ! excluded: sqrt_unit_m10_p10_m20_p00
    ! excluded: sqrt_unit_p00_p10_m10_p00
    ! excluded: sqrt_unit_p20_p10_m20_p00
    module procedure sqrt_unit_p20_p00_m20_p00
    ! excluded: sqrt_unit_p20_p00_m20_m10
    ! excluded: sqrt_unit_p20_p10_m20_m10
    ! excluded: sqrt_unit_p00_p00_p00_p10
    ! excluded: sqrt_unit_m30_p10_p00_p00
    ! excluded: sqrt_unit_p00_p00_p10_p00
    ! excluded: sqrt_unit_p30_p00_p00_p00
    ! excluded: sqrt_unit_p10_p00_m20_p00
    ! excluded: sqrt_unit_m10_p00_p00_p00
    ! excluded: sqrt_unit_m10_p00_p10_p00
    module procedure sqrt_unit_m20_p00_p00_p00
    ! excluded: sqrt_unit_p00_m10_p20_p00
    ! excluded: sqrt_unit_p10_m10_p20_p00
    ! excluded: sqrt_unit_p00_m10_p10_p00
    ! excluded: sqrt_unit_m20_m10_p20_p00
    module procedure sqrt_unit_m20_p00_p20_p00
    ! excluded: sqrt_unit_m20_p00_p20_p10
    ! excluded: sqrt_unit_m20_m10_p20_p10
    ! excluded: sqrt_unit_p00_p00_p00_m10
    ! excluded: sqrt_unit_p30_m10_p00_p00
    ! excluded: sqrt_unit_p00_p00_m10_p00
    ! excluded: sqrt_unit_m30_p00_p00_p00
    ! excluded: sqrt_unit_m10_p00_p20_p00
    ! excluded: sqrt_unit_p20_p00_m10_p00
    ! excluded: sqrt_unit_p10_p10_p00_p00
    ! excluded: sqrt_unit_p10_m10_p00_p00
    ! excluded: sqrt_unit_p10_p10_m20_p00
    ! excluded: sqrt_unit_p20_m10_p20_p00
    ! excluded: sqrt_unit_p10_p10_m10_p00
    ! excluded: sqrt_unit_p10_m10_p10_p00
    ! excluded: sqrt_unit_p30_p10_m20_p00
    ! excluded: sqrt_unit_m10_m10_p20_p00
    ! excluded: sqrt_unit_p30_p00_m20_p00
    ! excluded: sqrt_unit_p30_p00_m20_m10
    ! excluded: sqrt_unit_m10_p00_p20_p10
    ! excluded: sqrt_unit_p30_p10_m20_m10
    ! excluded: sqrt_unit_m10_m10_p20_p10
    ! excluded: sqrt_unit_p10_p00_p00_p10
    ! excluded: sqrt_unit_p10_p00_p00_m10
    ! excluded: sqrt_unit_m20_p10_p00_p00
end interface sqrt

interface square
    module procedure square_unit_p00_p00_p00_p00
    module procedure square_unit_p10_p00_p00_p00
    module procedure square_unit_p10_p00_m10_p00
    ! excluded: square_unit_p20_p00_p00_p00
    ! excluded: square_unit_p00_p10_p00_p00
    ! excluded: square_unit_p00_m10_p00_p00
    ! excluded: square_unit_p00_p10_m20_p00
    ! excluded: square_unit_m10_p10_m20_p00
    ! excluded: square_unit_p00_p10_m10_p00
    ! excluded: square_unit_p20_p10_m20_p00
    ! excluded: square_unit_p20_p00_m20_p00
    ! excluded: square_unit_p20_p00_m20_m10
    ! excluded: square_unit_p20_p10_m20_m10
    ! excluded: square_unit_p00_p00_p00_p10
    ! excluded: square_unit_m30_p10_p00_p00
    ! excluded: square_unit_p00_p00_p10_p00
    ! excluded: square_unit_p30_p00_p00_p00
    ! excluded: square_unit_p10_p00_m20_p00
    module procedure square_unit_m10_p00_p00_p00
    module procedure square_unit_m10_p00_p10_p00
    ! excluded: square_unit_m20_p00_p00_p00
    ! excluded: square_unit_p00_m10_p20_p00
    ! excluded: square_unit_p10_m10_p20_p00
    ! excluded: square_unit_p00_m10_p10_p00
    ! excluded: square_unit_m20_m10_p20_p00
    ! excluded: square_unit_m20_p00_p20_p00
    ! excluded: square_unit_m20_p00_p20_p10
    ! excluded: square_unit_m20_m10_p20_p10
    ! excluded: square_unit_p00_p00_p00_m10
    ! excluded: square_unit_p30_m10_p00_p00
    ! excluded: square_unit_p00_p00_m10_p00
    ! excluded: square_unit_m30_p00_p00_p00
    ! excluded: square_unit_m10_p00_p20_p00
    ! excluded: square_unit_p20_p00_m10_p00
    ! excluded: square_unit_p10_p10_p00_p00
    ! excluded: square_unit_p10_m10_p00_p00
    ! excluded: square_unit_p10_p10_m20_p00
    ! excluded: square_unit_p20_m10_p20_p00
    ! excluded: square_unit_p10_p10_m10_p00
    ! excluded: square_unit_p10_m10_p10_p00
    ! excluded: square_unit_p30_p10_m20_p00
    ! excluded: square_unit_m10_m10_p20_p00
    ! excluded: square_unit_p30_p00_m20_p00
    ! excluded: square_unit_p30_p00_m20_m10
    ! excluded: square_unit_m10_p00_p20_p10
    ! excluded: square_unit_p30_p10_m20_m10
    ! excluded: square_unit_m10_m10_p20_p10
    ! excluded: square_unit_p10_p00_p00_p10
    ! excluded: square_unit_p10_p00_p00_m10
    ! excluded: square_unit_m20_p10_p00_p00
end interface square

interface sin
    module procedure sin_unit_p00_p00_p00_p00
end interface sin

interface cos
    module procedure cos_unit_p00_p00_p00_p00
end interface cos

interface tan
    module procedure tan_unit_p00_p00_p00_p00
end interface tan

interface exp
    module procedure exp_unit_p00_p00_p00_p00
end interface exp

interface log
    module procedure log_unit_p00_p00_p00_p00
end interface log

interface tanh
    module procedure tanh_unit_p00_p00_p00_p00
end interface tanh

interface atanh
    module procedure atanh_unit_p00_p00_p00_p00
end interface atanh

interface abs
    module procedure abs_unit_p00_p00_p00_p00
    module procedure abs_unit_p10_p00_p00_p00
    module procedure abs_unit_p10_p00_m10_p00
    module procedure abs_unit_p20_p00_p00_p00
    module procedure abs_unit_p00_p10_p00_p00
    module procedure abs_unit_p00_m10_p00_p00
    module procedure abs_unit_p00_p10_m20_p00
    module procedure abs_unit_m10_p10_m20_p00
    module procedure abs_unit_p00_p10_m10_p00
    module procedure abs_unit_p20_p10_m20_p00
    module procedure abs_unit_p20_p00_m20_p00
    module procedure abs_unit_p20_p00_m20_m10
    module procedure abs_unit_p20_p10_m20_m10
    module procedure abs_unit_p00_p00_p00_p10
    module procedure abs_unit_m30_p10_p00_p00
    module procedure abs_unit_p00_p00_p10_p00
    module procedure abs_unit_p30_p00_p00_p00
    module procedure abs_unit_p10_p00_m20_p00
    module procedure abs_unit_m10_p00_p00_p00
    module procedure abs_unit_m10_p00_p10_p00
    module procedure abs_unit_m20_p00_p00_p00
    module procedure abs_unit_p00_m10_p20_p00
    module procedure abs_unit_p10_m10_p20_p00
    module procedure abs_unit_p00_m10_p10_p00
    module procedure abs_unit_m20_m10_p20_p00
    module procedure abs_unit_m20_p00_p20_p00
    module procedure abs_unit_m20_p00_p20_p10
    module procedure abs_unit_m20_m10_p20_p10
    module procedure abs_unit_p00_p00_p00_m10
    module procedure abs_unit_p30_m10_p00_p00
    module procedure abs_unit_p00_p00_m10_p00
    module procedure abs_unit_m30_p00_p00_p00
    module procedure abs_unit_m10_p00_p20_p00
    module procedure abs_unit_p20_p00_m10_p00
    module procedure abs_unit_p10_p10_p00_p00
    module procedure abs_unit_p10_m10_p00_p00
    module procedure abs_unit_p10_p10_m20_p00
    module procedure abs_unit_p20_m10_p20_p00
    module procedure abs_unit_p10_p10_m10_p00
    module procedure abs_unit_p10_m10_p10_p00
    module procedure abs_unit_p30_p10_m20_p00
    module procedure abs_unit_m10_m10_p20_p00
    module procedure abs_unit_p30_p00_m20_p00
    module procedure abs_unit_p30_p00_m20_m10
    module procedure abs_unit_m10_p00_p20_p10
    module procedure abs_unit_p30_p10_m20_m10
    module procedure abs_unit_m10_m10_p20_p10
    module procedure abs_unit_p10_p00_p00_p10
    module procedure abs_unit_p10_p00_p00_m10
    module procedure abs_unit_m20_p10_p00_p00
end interface abs

interface min
    module procedure min_unit_p00_p00_p00_p00
    module procedure min_unit_p10_p00_p00_p00
    module procedure min_unit_p10_p00_m10_p00
    module procedure min_unit_p20_p00_p00_p00
    module procedure min_unit_p00_p10_p00_p00
    module procedure min_unit_p00_m10_p00_p00
    module procedure min_unit_p00_p10_m20_p00
    module procedure min_unit_m10_p10_m20_p00
    module procedure min_unit_p00_p10_m10_p00
    module procedure min_unit_p20_p10_m20_p00
    module procedure min_unit_p20_p00_m20_p00
    module procedure min_unit_p20_p00_m20_m10
    module procedure min_unit_p20_p10_m20_m10
    module procedure min_unit_p00_p00_p00_p10
    module procedure min_unit_m30_p10_p00_p00
    module procedure min_unit_p00_p00_p10_p00
    module procedure min_unit_p30_p00_p00_p00
    module procedure min_unit_p10_p00_m20_p00
    module procedure min_unit_m10_p00_p00_p00
    module procedure min_unit_m10_p00_p10_p00
    module procedure min_unit_m20_p00_p00_p00
    module procedure min_unit_p00_m10_p20_p00
    module procedure min_unit_p10_m10_p20_p00
    module procedure min_unit_p00_m10_p10_p00
    module procedure min_unit_m20_m10_p20_p00
    module procedure min_unit_m20_p00_p20_p00
    module procedure min_unit_m20_p00_p20_p10
    module procedure min_unit_m20_m10_p20_p10
    module procedure min_unit_p00_p00_p00_m10
    module procedure min_unit_p30_m10_p00_p00
    module procedure min_unit_p00_p00_m10_p00
    module procedure min_unit_m30_p00_p00_p00
    module procedure min_unit_m10_p00_p20_p00
    module procedure min_unit_p20_p00_m10_p00
    module procedure min_unit_p10_p10_p00_p00
    module procedure min_unit_p10_m10_p00_p00
    module procedure min_unit_p10_p10_m20_p00
    module procedure min_unit_p20_m10_p20_p00
    module procedure min_unit_p10_p10_m10_p00
    module procedure min_unit_p10_m10_p10_p00
    module procedure min_unit_p30_p10_m20_p00
    module procedure min_unit_m10_m10_p20_p00
    module procedure min_unit_p30_p00_m20_p00
    module procedure min_unit_p30_p00_m20_m10
    module procedure min_unit_m10_p00_p20_p10
    module procedure min_unit_p30_p10_m20_m10
    module procedure min_unit_m10_m10_p20_p10
    module procedure min_unit_p10_p00_p00_p10
    module procedure min_unit_p10_p00_p00_m10
    module procedure min_unit_m20_p10_p00_p00
end interface min

interface max
    module procedure max_unit_p00_p00_p00_p00
    module procedure max_unit_p10_p00_p00_p00
    module procedure max_unit_p10_p00_m10_p00
    module procedure max_unit_p20_p00_p00_p00
    module procedure max_unit_p00_p10_p00_p00
    module procedure max_unit_p00_m10_p00_p00
    module procedure max_unit_p00_p10_m20_p00
    module procedure max_unit_m10_p10_m20_p00
    module procedure max_unit_p00_p10_m10_p00
    module procedure max_unit_p20_p10_m20_p00
    module procedure max_unit_p20_p00_m20_p00
    module procedure max_unit_p20_p00_m20_m10
    module procedure max_unit_p20_p10_m20_m10
    module procedure max_unit_p00_p00_p00_p10
    module procedure max_unit_m30_p10_p00_p00
    module procedure max_unit_p00_p00_p10_p00
    module procedure max_unit_p30_p00_p00_p00
    module procedure max_unit_p10_p00_m20_p00
    module procedure max_unit_m10_p00_p00_p00
    module procedure max_unit_m10_p00_p10_p00
    module procedure max_unit_m20_p00_p00_p00
    module procedure max_unit_p00_m10_p20_p00
    module procedure max_unit_p10_m10_p20_p00
    module procedure max_unit_p00_m10_p10_p00
    module procedure max_unit_m20_m10_p20_p00
    module procedure max_unit_m20_p00_p20_p00
    module procedure max_unit_m20_p00_p20_p10
    module procedure max_unit_m20_m10_p20_p10
    module procedure max_unit_p00_p00_p00_m10
    module procedure max_unit_p30_m10_p00_p00
    module procedure max_unit_p00_p00_m10_p00
    module procedure max_unit_m30_p00_p00_p00
    module procedure max_unit_m10_p00_p20_p00
    module procedure max_unit_p20_p00_m10_p00
    module procedure max_unit_p10_p10_p00_p00
    module procedure max_unit_p10_m10_p00_p00
    module procedure max_unit_p10_p10_m20_p00
    module procedure max_unit_p20_m10_p20_p00
    module procedure max_unit_p10_p10_m10_p00
    module procedure max_unit_p10_m10_p10_p00
    module procedure max_unit_p30_p10_m20_p00
    module procedure max_unit_m10_m10_p20_p00
    module procedure max_unit_p30_p00_m20_p00
    module procedure max_unit_p30_p00_m20_m10
    module procedure max_unit_m10_p00_p20_p10
    module procedure max_unit_p30_p10_m20_m10
    module procedure max_unit_m10_m10_p20_p10
    module procedure max_unit_p10_p00_p00_p10
    module procedure max_unit_p10_p00_p00_m10
    module procedure max_unit_m20_p10_p00_p00
end interface max

contains

pure function unit(arg)
    class(*), intent(in) :: arg
    character(len=32) :: unit
    select type (arg)
        type is (unit_p00_p00_p00_p00)
            unit = "1"
        type is (unit_p10_p00_p00_p00)
            unit = "m"
        type is (unit_p10_p00_m10_p00)
            unit = "m/s"
        type is (unit_p20_p00_p00_p00)
            unit = "m2"
        type is (unit_p00_p10_p00_p00)
            unit = "kg"
        type is (unit_p00_m10_p00_p00)
            unit = "1/kg"
        type is (unit_p00_p10_m20_p00)
            unit = "kg/s2"
        type is (unit_m10_p10_m20_p00)
            unit = "kg/m/s2"
        type is (unit_p00_p10_m10_p00)
            unit = "kg/s"
        type is (unit_p20_p10_m20_p00)
            unit = "m2.kg/s2"
        type is (unit_p20_p00_m20_p00)
            unit = "m2/s2"
        type is (unit_p20_p00_m20_m10)
            unit = "m2/s2/K"
        type is (unit_p20_p10_m20_m10)
            unit = "m2.kg/s2/K"
        type is (unit_p00_p00_p00_p10)
            unit = "K"
        type is (unit_m30_p10_p00_p00)
            unit = "kg/m3"
        type is (unit_p00_p00_p10_p00)
            unit = "s"
        type is (unit_p30_p00_p00_p00)
            unit = "m3"
        type is (unit_p10_p00_m20_p00)
            unit = "m/s2"
        type is (unit_m10_p00_p00_p00)
            unit = "1/m"
        type is (unit_m10_p00_p10_p00)
            unit = "s/m"
        type is (unit_m20_p00_p00_p00)
            unit = "1/m2"
        type is (unit_p00_m10_p20_p00)
            unit = "s2/kg"
        type is (unit_p10_m10_p20_p00)
            unit = "m.s2/kg"
        type is (unit_p00_m10_p10_p00)
            unit = "s/kg"
        type is (unit_m20_m10_p20_p00)
            unit = "s2/m2/kg"
        type is (unit_m20_p00_p20_p00)
            unit = "s2/m2"
        type is (unit_m20_p00_p20_p10)
            unit = "s2.K/m2"
        type is (unit_m20_m10_p20_p10)
            unit = "s2.K/m2/kg"
        type is (unit_p00_p00_p00_m10)
            unit = "1/K"
        type is (unit_p30_m10_p00_p00)
            unit = "m3/kg"
        type is (unit_p00_p00_m10_p00)
            unit = "1/s"
        type is (unit_m30_p00_p00_p00)
            unit = "1/m3"
        type is (unit_m10_p00_p20_p00)
            unit = "s2/m"
        type is (unit_p20_p00_m10_p00)
            unit = "m2/s"
        type is (unit_p10_p10_p00_p00)
            unit = "m.kg"
        type is (unit_p10_m10_p00_p00)
            unit = "m/kg"
        type is (unit_p10_p10_m20_p00)
            unit = "m.kg/s2"
        type is (unit_p20_m10_p20_p00)
            unit = "m2.s2/kg"
        type is (unit_p10_p10_m10_p00)
            unit = "m.kg/s"
        type is (unit_p10_m10_p10_p00)
            unit = "m.s/kg"
        type is (unit_p30_p10_m20_p00)
            unit = "m3.kg/s2"
        type is (unit_m10_m10_p20_p00)
            unit = "s2/m/kg"
        type is (unit_p30_p00_m20_p00)
            unit = "m3/s2"
        type is (unit_p30_p00_m20_m10)
            unit = "m3/s2/K"
        type is (unit_m10_p00_p20_p10)
            unit = "s2.K/m"
        type is (unit_p30_p10_m20_m10)
            unit = "m3.kg/s2/K"
        type is (unit_m10_m10_p20_p10)
            unit = "s2.K/m/kg"
        type is (unit_p10_p00_p00_p10)
            unit = "m.K"
        type is (unit_p10_p00_p00_m10)
            unit = "m/K"
        type is (unit_m20_p10_p00_p00)
            unit = "kg/m2"
        class default
            error stop "units (unit): invalid type"
    end select
end function unit

subroutine wf_unit_p00_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1"
end subroutine wf_unit_p00_p00_p00_p00

subroutine rf_unit_p00_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1
    class(unit_p00_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1") then
        iostat = 2
        iomsg = "Unit mismatch: 1 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p00_p00_p00

elemental function a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v + right%v
end function a_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function a_real_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    real, intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: a_real_unit_p00_p00_p00_p00
    a_real_unit_p00_p00_p00_p00%v = left + right%v
end function a_real_unit_p00_p00_p00_p00

elemental function a_unit_p00_p00_p00_p00_real(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p00) :: a_unit_p00_p00_p00_p00_real
    a_unit_p00_p00_p00_p00_real%v = left%v + right
end function a_unit_p00_p00_p00_p00_real

elemental function s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v - right%v
end function s_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function s_real_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    real, intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: s_real_unit_p00_p00_p00_p00
    s_real_unit_p00_p00_p00_p00%v = left - right%v
end function s_real_unit_p00_p00_p00_p00

elemental function s_unit_p00_p00_p00_p00_real(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p00) :: s_unit_p00_p00_p00_p00_real
    s_unit_p00_p00_p00_p00_real%v = left%v - right
end function s_unit_p00_p00_p00_p00_real

elemental function lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00 = left%v < right%v
end function lt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    logical :: le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00 = left%v <= right%v
end function le_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00 = left%v > right%v
end function gt_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00 = left%v >= right%v
end function ge_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function a_unit_p00_p00_p00_p00(arg)
    ! argument unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg
    type(unit_p00_p00_p00_p00) :: a_unit_p00_p00_p00_p00
    a_unit_p00_p00_p00_p00%v = +arg%v
end function a_unit_p00_p00_p00_p00

elemental function s_unit_p00_p00_p00_p00(arg)
    ! argument unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg
    type(unit_p00_p00_p00_p00) :: s_unit_p00_p00_p00_p00
    s_unit_p00_p00_p00_p00%v = -arg%v
end function s_unit_p00_p00_p00_p00

subroutine wf_unit_p10_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m"
end subroutine wf_unit_p10_p00_p00_p00

subroutine rf_unit_p10_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m
    class(unit_p10_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m") then
        iostat = 2
        iomsg = "Unit mismatch: m expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p00_p00_p00

elemental function a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v + right%v
end function a_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v - right%v
end function s_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00 = left%v < right%v
end function lt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    logical :: le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00 = left%v <= right%v
end function le_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00 = left%v > right%v
end function gt_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00 = left%v >= right%v
end function ge_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function a_unit_p10_p00_p00_p00(arg)
    ! argument unit: m
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: arg
    type(unit_p10_p00_p00_p00) :: a_unit_p10_p00_p00_p00
    a_unit_p10_p00_p00_p00%v = +arg%v
end function a_unit_p10_p00_p00_p00

elemental function s_unit_p10_p00_p00_p00(arg)
    ! argument unit: m
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: arg
    type(unit_p10_p00_p00_p00) :: s_unit_p10_p00_p00_p00
    s_unit_p10_p00_p00_p00%v = -arg%v
end function s_unit_p10_p00_p00_p00

subroutine wf_unit_p10_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m/s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p00_m10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m/s"
end subroutine wf_unit_p10_p00_m10_p00

subroutine rf_unit_p10_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m/s
    class(unit_p10_p00_m10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m/s") then
        iostat = 2
        iomsg = "Unit mismatch: m/s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p00_m10_p00

elemental function a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v + right%v
end function a_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v - right%v
end function s_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    logical :: lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00 = left%v < right%v
end function lt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    logical :: le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00 = left%v <= right%v
end function le_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    logical :: gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00 = left%v > right%v
end function gt_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    logical :: ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00 = left%v >= right%v
end function ge_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function a_unit_p10_p00_m10_p00(arg)
    ! argument unit: m/s
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: arg
    type(unit_p10_p00_m10_p00) :: a_unit_p10_p00_m10_p00
    a_unit_p10_p00_m10_p00%v = +arg%v
end function a_unit_p10_p00_m10_p00

elemental function s_unit_p10_p00_m10_p00(arg)
    ! argument unit: m/s
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: arg
    type(unit_p10_p00_m10_p00) :: s_unit_p10_p00_m10_p00
    s_unit_p10_p00_m10_p00%v = -arg%v
end function s_unit_p10_p00_m10_p00

subroutine wf_unit_p20_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2"
end subroutine wf_unit_p20_p00_p00_p00

subroutine rf_unit_p20_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2
    class(unit_p20_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2") then
        iostat = 2
        iomsg = "Unit mismatch: m2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p00_p00_p00

elemental function a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v + right%v
end function a_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v - right%v
end function s_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00 = left%v < right%v
end function lt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    logical :: le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00 = left%v <= right%v
end function le_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00 = left%v > right%v
end function gt_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00 = left%v >= right%v
end function ge_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function a_unit_p20_p00_p00_p00(arg)
    ! argument unit: m2
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: arg
    type(unit_p20_p00_p00_p00) :: a_unit_p20_p00_p00_p00
    a_unit_p20_p00_p00_p00%v = +arg%v
end function a_unit_p20_p00_p00_p00

elemental function s_unit_p20_p00_p00_p00(arg)
    ! argument unit: m2
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: arg
    type(unit_p20_p00_p00_p00) :: s_unit_p20_p00_p00_p00
    s_unit_p20_p00_p00_p00%v = -arg%v
end function s_unit_p20_p00_p00_p00

subroutine wf_unit_p00_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg"
end subroutine wf_unit_p00_p10_p00_p00

subroutine rf_unit_p00_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg
    class(unit_p00_p10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg") then
        iostat = 2
        iomsg = "Unit mismatch: kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p10_p00_p00

elemental function a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v + right%v
end function a_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v - right%v
end function s_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    logical :: lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00 = left%v < right%v
end function lt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    logical :: le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00 = left%v <= right%v
end function le_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    logical :: gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00 = left%v > right%v
end function gt_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    logical :: ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00 = left%v >= right%v
end function ge_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function a_unit_p00_p10_p00_p00(arg)
    ! argument unit: kg
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: arg
    type(unit_p00_p10_p00_p00) :: a_unit_p00_p10_p00_p00
    a_unit_p00_p10_p00_p00%v = +arg%v
end function a_unit_p00_p10_p00_p00

elemental function s_unit_p00_p10_p00_p00(arg)
    ! argument unit: kg
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: arg
    type(unit_p00_p10_p00_p00) :: s_unit_p00_p10_p00_p00
    s_unit_p00_p10_p00_p00%v = -arg%v
end function s_unit_p00_p10_p00_p00

subroutine wf_unit_p00_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_m10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/kg"
end subroutine wf_unit_p00_m10_p00_p00

subroutine rf_unit_p00_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/kg") then
        iostat = 2
        iomsg = "Unit mismatch: 1/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_m10_p00_p00

elemental function a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00%v = left%v + right%v
end function a_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00%v = left%v - right%v
end function s_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    logical :: lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00 = left%v < right%v
end function lt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    logical :: le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00 = left%v <= right%v
end function le_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    logical :: gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00 = left%v > right%v
end function gt_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    logical :: ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00 = left%v >= right%v
end function ge_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function a_unit_p00_m10_p00_p00(arg)
    ! argument unit: 1/kg
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: arg
    type(unit_p00_m10_p00_p00) :: a_unit_p00_m10_p00_p00
    a_unit_p00_m10_p00_p00%v = +arg%v
end function a_unit_p00_m10_p00_p00

elemental function s_unit_p00_m10_p00_p00(arg)
    ! argument unit: 1/kg
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: arg
    type(unit_p00_m10_p00_p00) :: s_unit_p00_m10_p00_p00
    s_unit_p00_m10_p00_p00%v = -arg%v
end function s_unit_p00_m10_p00_p00

subroutine wf_unit_p00_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p10_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg/s2"
end subroutine wf_unit_p00_p10_m20_p00

subroutine rf_unit_p00_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg/s2") then
        iostat = 2
        iomsg = "Unit mismatch: kg/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p10_m20_p00

elemental function a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v + right%v
end function a_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v - right%v
end function s_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    logical :: lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00 = left%v < right%v
end function lt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    logical :: le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00 = left%v <= right%v
end function le_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    logical :: gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00 = left%v > right%v
end function gt_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    logical :: ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00 = left%v >= right%v
end function ge_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function a_unit_p00_p10_m20_p00(arg)
    ! argument unit: kg/s2
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: arg
    type(unit_p00_p10_m20_p00) :: a_unit_p00_p10_m20_p00
    a_unit_p00_p10_m20_p00%v = +arg%v
end function a_unit_p00_p10_m20_p00

elemental function s_unit_p00_p10_m20_p00(arg)
    ! argument unit: kg/s2
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: arg
    type(unit_p00_p10_m20_p00) :: s_unit_p00_p10_m20_p00
    s_unit_p00_p10_m20_p00%v = -arg%v
end function s_unit_p00_p10_m20_p00

subroutine wf_unit_m10_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg/m/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_p10_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg/m/s2"
end subroutine wf_unit_m10_p10_m20_p00

subroutine rf_unit_m10_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg/m/s2") then
        iostat = 2
        iomsg = "Unit mismatch: kg/m/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_p10_m20_p00

elemental function a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v + right%v
end function a_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v - right%v
end function s_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    logical :: lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00 = left%v < right%v
end function lt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    logical :: le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00 = left%v <= right%v
end function le_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    logical :: gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00 = left%v > right%v
end function gt_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    logical :: ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00 = left%v >= right%v
end function ge_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function a_unit_m10_p10_m20_p00(arg)
    ! argument unit: kg/m/s2
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: arg
    type(unit_m10_p10_m20_p00) :: a_unit_m10_p10_m20_p00
    a_unit_m10_p10_m20_p00%v = +arg%v
end function a_unit_m10_p10_m20_p00

elemental function s_unit_m10_p10_m20_p00(arg)
    ! argument unit: kg/m/s2
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: arg
    type(unit_m10_p10_m20_p00) :: s_unit_m10_p10_m20_p00
    s_unit_m10_p10_m20_p00%v = -arg%v
end function s_unit_m10_p10_m20_p00

subroutine wf_unit_p00_p10_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg/s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p10_m10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg/s"
end subroutine wf_unit_p00_p10_m10_p00

subroutine rf_unit_p00_p10_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg/s") then
        iostat = 2
        iomsg = "Unit mismatch: kg/s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p10_m10_p00

elemental function a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00%v = left%v + right%v
end function a_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00%v = left%v - right%v
end function s_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    logical :: lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00 = left%v < right%v
end function lt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    logical :: le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00 = left%v <= right%v
end function le_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    logical :: gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00 = left%v > right%v
end function gt_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    logical :: ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00 = left%v >= right%v
end function ge_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function a_unit_p00_p10_m10_p00(arg)
    ! argument unit: kg/s
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: arg
    type(unit_p00_p10_m10_p00) :: a_unit_p00_p10_m10_p00
    a_unit_p00_p10_m10_p00%v = +arg%v
end function a_unit_p00_p10_m10_p00

elemental function s_unit_p00_p10_m10_p00(arg)
    ! argument unit: kg/s
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: arg
    type(unit_p00_p10_m10_p00) :: s_unit_p00_p10_m10_p00
    s_unit_p00_p10_m10_p00%v = -arg%v
end function s_unit_p00_p10_m10_p00

subroutine wf_unit_p20_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2.kg/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p10_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2.kg/s2"
end subroutine wf_unit_p20_p10_m20_p00

subroutine rf_unit_p20_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2.kg/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m2.kg/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p10_m20_p00

elemental function a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v + right%v
end function a_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v - right%v
end function s_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    logical :: lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00 = left%v < right%v
end function lt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    logical :: le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00 = left%v <= right%v
end function le_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    logical :: gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00 = left%v > right%v
end function gt_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    logical :: ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00 = left%v >= right%v
end function ge_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function a_unit_p20_p10_m20_p00(arg)
    ! argument unit: m2.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: arg
    type(unit_p20_p10_m20_p00) :: a_unit_p20_p10_m20_p00
    a_unit_p20_p10_m20_p00%v = +arg%v
end function a_unit_p20_p10_m20_p00

elemental function s_unit_p20_p10_m20_p00(arg)
    ! argument unit: m2.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: arg
    type(unit_p20_p10_m20_p00) :: s_unit_p20_p10_m20_p00
    s_unit_p20_p10_m20_p00%v = -arg%v
end function s_unit_p20_p10_m20_p00

subroutine wf_unit_p20_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p00_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2/s2"
end subroutine wf_unit_p20_p00_m20_p00

subroutine rf_unit_p20_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m2/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p00_m20_p00

elemental function a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00%v = left%v + right%v
end function a_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00%v = left%v - right%v
end function s_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    logical :: lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00 = left%v < right%v
end function lt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    logical :: le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00 = left%v <= right%v
end function le_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    logical :: gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00 = left%v > right%v
end function gt_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    logical :: ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00 = left%v >= right%v
end function ge_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function a_unit_p20_p00_m20_p00(arg)
    ! argument unit: m2/s2
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: arg
    type(unit_p20_p00_m20_p00) :: a_unit_p20_p00_m20_p00
    a_unit_p20_p00_m20_p00%v = +arg%v
end function a_unit_p20_p00_m20_p00

elemental function s_unit_p20_p00_m20_p00(arg)
    ! argument unit: m2/s2
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: arg
    type(unit_p20_p00_m20_p00) :: s_unit_p20_p00_m20_p00
    s_unit_p20_p00_m20_p00%v = -arg%v
end function s_unit_p20_p00_m20_p00

subroutine wf_unit_p20_p00_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2/s2/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p00_m20_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2/s2/K"
end subroutine wf_unit_p20_p00_m20_m10

subroutine rf_unit_p20_p00_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2/s2/K") then
        iostat = 2
        iomsg = "Unit mismatch: m2/s2/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p00_m20_m10

elemental function a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10%v = left%v + right%v
end function a_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10%v = left%v - right%v
end function s_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    logical :: lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10 = left%v < right%v
end function lt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    logical :: le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10 = left%v <= right%v
end function le_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    logical :: gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10 = left%v > right%v
end function gt_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    logical :: ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10 = left%v >= right%v
end function ge_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function a_unit_p20_p00_m20_m10(arg)
    ! argument unit: m2/s2/K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: arg
    type(unit_p20_p00_m20_m10) :: a_unit_p20_p00_m20_m10
    a_unit_p20_p00_m20_m10%v = +arg%v
end function a_unit_p20_p00_m20_m10

elemental function s_unit_p20_p00_m20_m10(arg)
    ! argument unit: m2/s2/K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: arg
    type(unit_p20_p00_m20_m10) :: s_unit_p20_p00_m20_m10
    s_unit_p20_p00_m20_m10%v = -arg%v
end function s_unit_p20_p00_m20_m10

subroutine wf_unit_p20_p10_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2.kg/s2/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p10_m20_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2.kg/s2/K"
end subroutine wf_unit_p20_p10_m20_m10

subroutine rf_unit_p20_p10_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2.kg/s2/K") then
        iostat = 2
        iomsg = "Unit mismatch: m2.kg/s2/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p10_m20_m10

elemental function a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10%v = left%v + right%v
end function a_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10%v = left%v - right%v
end function s_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    logical :: lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10 = left%v < right%v
end function lt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    logical :: le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10 = left%v <= right%v
end function le_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    logical :: gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10 = left%v > right%v
end function gt_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    logical :: ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10 = left%v >= right%v
end function ge_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function a_unit_p20_p10_m20_m10(arg)
    ! argument unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: arg
    type(unit_p20_p10_m20_m10) :: a_unit_p20_p10_m20_m10
    a_unit_p20_p10_m20_m10%v = +arg%v
end function a_unit_p20_p10_m20_m10

elemental function s_unit_p20_p10_m20_m10(arg)
    ! argument unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: arg
    type(unit_p20_p10_m20_m10) :: s_unit_p20_p10_m20_m10
    s_unit_p20_p10_m20_m10%v = -arg%v
end function s_unit_p20_p10_m20_m10

subroutine wf_unit_p00_p00_p00_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p00_p00_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "K"
end subroutine wf_unit_p00_p00_p00_p10

subroutine rf_unit_p00_p00_p00_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: K
    class(unit_p00_p00_p00_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "K") then
        iostat = 2
        iomsg = "Unit mismatch: K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p00_p00_p10

elemental function a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10%v = left%v + right%v
end function a_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10%v = left%v - right%v
end function s_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    logical :: lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10 = left%v < right%v
end function lt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    logical :: le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10 = left%v <= right%v
end function le_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    logical :: gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10 = left%v > right%v
end function gt_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    logical :: ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10 = left%v >= right%v
end function ge_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function a_unit_p00_p00_p00_p10(arg)
    ! argument unit: K
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: arg
    type(unit_p00_p00_p00_p10) :: a_unit_p00_p00_p00_p10
    a_unit_p00_p00_p00_p10%v = +arg%v
end function a_unit_p00_p00_p00_p10

elemental function s_unit_p00_p00_p00_p10(arg)
    ! argument unit: K
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: arg
    type(unit_p00_p00_p00_p10) :: s_unit_p00_p00_p00_p10
    s_unit_p00_p00_p00_p10%v = -arg%v
end function s_unit_p00_p00_p00_p10

subroutine wf_unit_m30_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg/m3
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m30_p10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg/m3"
end subroutine wf_unit_m30_p10_p00_p00

subroutine rf_unit_m30_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg/m3") then
        iostat = 2
        iomsg = "Unit mismatch: kg/m3 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m30_p10_p00_p00

elemental function a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00%v = left%v + right%v
end function a_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00%v = left%v - right%v
end function s_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    logical :: lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00 = left%v < right%v
end function lt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    logical :: le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00 = left%v <= right%v
end function le_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    logical :: gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00 = left%v > right%v
end function gt_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    logical :: ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00 = left%v >= right%v
end function ge_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function a_unit_m30_p10_p00_p00(arg)
    ! argument unit: kg/m3
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: arg
    type(unit_m30_p10_p00_p00) :: a_unit_m30_p10_p00_p00
    a_unit_m30_p10_p00_p00%v = +arg%v
end function a_unit_m30_p10_p00_p00

elemental function s_unit_m30_p10_p00_p00(arg)
    ! argument unit: kg/m3
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: arg
    type(unit_m30_p10_p00_p00) :: s_unit_m30_p10_p00_p00
    s_unit_m30_p10_p00_p00%v = -arg%v
end function s_unit_m30_p10_p00_p00

subroutine wf_unit_p00_p00_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p00_p10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s"
end subroutine wf_unit_p00_p00_p10_p00

subroutine rf_unit_p00_p00_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s
    class(unit_p00_p00_p10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s") then
        iostat = 2
        iomsg = "Unit mismatch: s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p00_p10_p00

elemental function a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00%v = left%v + right%v
end function a_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00%v = left%v - right%v
end function s_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    logical :: lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00 = left%v < right%v
end function lt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    logical :: le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00 = left%v <= right%v
end function le_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    logical :: gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00 = left%v > right%v
end function gt_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    logical :: ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00 = left%v >= right%v
end function ge_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function a_unit_p00_p00_p10_p00(arg)
    ! argument unit: s
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: arg
    type(unit_p00_p00_p10_p00) :: a_unit_p00_p00_p10_p00
    a_unit_p00_p00_p10_p00%v = +arg%v
end function a_unit_p00_p00_p10_p00

elemental function s_unit_p00_p00_p10_p00(arg)
    ! argument unit: s
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: arg
    type(unit_p00_p00_p10_p00) :: s_unit_p00_p00_p10_p00
    s_unit_p00_p00_p10_p00%v = -arg%v
end function s_unit_p00_p00_p10_p00

subroutine wf_unit_p30_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3"
end subroutine wf_unit_p30_p00_p00_p00

subroutine rf_unit_p30_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3
    class(unit_p30_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3") then
        iostat = 2
        iomsg = "Unit mismatch: m3 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_p00_p00_p00

elemental function a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v + right%v
end function a_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v - right%v
end function s_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00 = left%v < right%v
end function lt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    logical :: le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00 = left%v <= right%v
end function le_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00 = left%v > right%v
end function gt_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00 = left%v >= right%v
end function ge_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function a_unit_p30_p00_p00_p00(arg)
    ! argument unit: m3
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: arg
    type(unit_p30_p00_p00_p00) :: a_unit_p30_p00_p00_p00
    a_unit_p30_p00_p00_p00%v = +arg%v
end function a_unit_p30_p00_p00_p00

elemental function s_unit_p30_p00_p00_p00(arg)
    ! argument unit: m3
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: arg
    type(unit_p30_p00_p00_p00) :: s_unit_p30_p00_p00_p00
    s_unit_p30_p00_p00_p00%v = -arg%v
end function s_unit_p30_p00_p00_p00

subroutine wf_unit_p10_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p00_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m/s2"
end subroutine wf_unit_p10_p00_m20_p00

subroutine rf_unit_p10_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p00_m20_p00

elemental function a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00%v = left%v + right%v
end function a_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00%v = left%v - right%v
end function s_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    logical :: lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00 = left%v < right%v
end function lt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    logical :: le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00 = left%v <= right%v
end function le_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    logical :: gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00 = left%v > right%v
end function gt_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    logical :: ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00 = left%v >= right%v
end function ge_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function a_unit_p10_p00_m20_p00(arg)
    ! argument unit: m/s2
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: arg
    type(unit_p10_p00_m20_p00) :: a_unit_p10_p00_m20_p00
    a_unit_p10_p00_m20_p00%v = +arg%v
end function a_unit_p10_p00_m20_p00

elemental function s_unit_p10_p00_m20_p00(arg)
    ! argument unit: m/s2
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: arg
    type(unit_p10_p00_m20_p00) :: s_unit_p10_p00_m20_p00
    s_unit_p10_p00_m20_p00%v = -arg%v
end function s_unit_p10_p00_m20_p00

subroutine wf_unit_m10_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/m
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/m"
end subroutine wf_unit_m10_p00_p00_p00

subroutine rf_unit_m10_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/m") then
        iostat = 2
        iomsg = "Unit mismatch: 1/m expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_p00_p00_p00

elemental function a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v + right%v
end function a_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v - right%v
end function s_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00 = left%v < right%v
end function lt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    logical :: le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00 = left%v <= right%v
end function le_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00 = left%v > right%v
end function gt_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00 = left%v >= right%v
end function ge_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function a_unit_m10_p00_p00_p00(arg)
    ! argument unit: 1/m
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: arg
    type(unit_m10_p00_p00_p00) :: a_unit_m10_p00_p00_p00
    a_unit_m10_p00_p00_p00%v = +arg%v
end function a_unit_m10_p00_p00_p00

elemental function s_unit_m10_p00_p00_p00(arg)
    ! argument unit: 1/m
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: arg
    type(unit_m10_p00_p00_p00) :: s_unit_m10_p00_p00_p00
    s_unit_m10_p00_p00_p00%v = -arg%v
end function s_unit_m10_p00_p00_p00

subroutine wf_unit_m10_p00_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s/m
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_p00_p10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s/m"
end subroutine wf_unit_m10_p00_p10_p00

subroutine rf_unit_m10_p00_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s/m
    class(unit_m10_p00_p10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s/m") then
        iostat = 2
        iomsg = "Unit mismatch: s/m expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_p00_p10_p00

elemental function a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v + right%v
end function a_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v - right%v
end function s_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    logical :: lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00 = left%v < right%v
end function lt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    logical :: le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00 = left%v <= right%v
end function le_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    logical :: gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00 = left%v > right%v
end function gt_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    logical :: ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00 = left%v >= right%v
end function ge_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function a_unit_m10_p00_p10_p00(arg)
    ! argument unit: s/m
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: arg
    type(unit_m10_p00_p10_p00) :: a_unit_m10_p00_p10_p00
    a_unit_m10_p00_p10_p00%v = +arg%v
end function a_unit_m10_p00_p10_p00

elemental function s_unit_m10_p00_p10_p00(arg)
    ! argument unit: s/m
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: arg
    type(unit_m10_p00_p10_p00) :: s_unit_m10_p00_p10_p00
    s_unit_m10_p00_p10_p00%v = -arg%v
end function s_unit_m10_p00_p10_p00

subroutine wf_unit_m20_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/m2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/m2"
end subroutine wf_unit_m20_p00_p00_p00

subroutine rf_unit_m20_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/m2") then
        iostat = 2
        iomsg = "Unit mismatch: 1/m2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_p00_p00_p00

elemental function a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v + right%v
end function a_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v - right%v
end function s_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00 = left%v < right%v
end function lt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    logical :: le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00 = left%v <= right%v
end function le_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00 = left%v > right%v
end function gt_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00 = left%v >= right%v
end function ge_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function a_unit_m20_p00_p00_p00(arg)
    ! argument unit: 1/m2
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: arg
    type(unit_m20_p00_p00_p00) :: a_unit_m20_p00_p00_p00
    a_unit_m20_p00_p00_p00%v = +arg%v
end function a_unit_m20_p00_p00_p00

elemental function s_unit_m20_p00_p00_p00(arg)
    ! argument unit: 1/m2
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: arg
    type(unit_m20_p00_p00_p00) :: s_unit_m20_p00_p00_p00
    s_unit_m20_p00_p00_p00%v = -arg%v
end function s_unit_m20_p00_p00_p00

subroutine wf_unit_p00_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_m10_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2/kg"
end subroutine wf_unit_p00_m10_p20_p00

subroutine rf_unit_p00_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s2/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_m10_p20_p00

elemental function a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v + right%v
end function a_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v - right%v
end function s_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    logical :: lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00 = left%v < right%v
end function lt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    logical :: le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00 = left%v <= right%v
end function le_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    logical :: gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00 = left%v > right%v
end function gt_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    logical :: ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00 = left%v >= right%v
end function ge_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function a_unit_p00_m10_p20_p00(arg)
    ! argument unit: s2/kg
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: arg
    type(unit_p00_m10_p20_p00) :: a_unit_p00_m10_p20_p00
    a_unit_p00_m10_p20_p00%v = +arg%v
end function a_unit_p00_m10_p20_p00

elemental function s_unit_p00_m10_p20_p00(arg)
    ! argument unit: s2/kg
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: arg
    type(unit_p00_m10_p20_p00) :: s_unit_p00_m10_p20_p00
    s_unit_p00_m10_p20_p00%v = -arg%v
end function s_unit_p00_m10_p20_p00

subroutine wf_unit_p10_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.s2/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_m10_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.s2/kg"
end subroutine wf_unit_p10_m10_p20_p00

subroutine rf_unit_p10_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.s2/kg") then
        iostat = 2
        iomsg = "Unit mismatch: m.s2/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_m10_p20_p00

elemental function a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v + right%v
end function a_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v - right%v
end function s_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    logical :: lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00 = left%v < right%v
end function lt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    logical :: le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00 = left%v <= right%v
end function le_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    logical :: gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00 = left%v > right%v
end function gt_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    logical :: ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00 = left%v >= right%v
end function ge_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function a_unit_p10_m10_p20_p00(arg)
    ! argument unit: m.s2/kg
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: arg
    type(unit_p10_m10_p20_p00) :: a_unit_p10_m10_p20_p00
    a_unit_p10_m10_p20_p00%v = +arg%v
end function a_unit_p10_m10_p20_p00

elemental function s_unit_p10_m10_p20_p00(arg)
    ! argument unit: m.s2/kg
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: arg
    type(unit_p10_m10_p20_p00) :: s_unit_p10_m10_p20_p00
    s_unit_p10_m10_p20_p00%v = -arg%v
end function s_unit_p10_m10_p20_p00

subroutine wf_unit_p00_m10_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_m10_p10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s/kg"
end subroutine wf_unit_p00_m10_p10_p00

subroutine rf_unit_p00_m10_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_m10_p10_p00

elemental function a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00%v = left%v + right%v
end function a_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00%v = left%v - right%v
end function s_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    logical :: lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00 = left%v < right%v
end function lt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    logical :: le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00 = left%v <= right%v
end function le_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    logical :: gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00 = left%v > right%v
end function gt_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    logical :: ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00 = left%v >= right%v
end function ge_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function a_unit_p00_m10_p10_p00(arg)
    ! argument unit: s/kg
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: arg
    type(unit_p00_m10_p10_p00) :: a_unit_p00_m10_p10_p00
    a_unit_p00_m10_p10_p00%v = +arg%v
end function a_unit_p00_m10_p10_p00

elemental function s_unit_p00_m10_p10_p00(arg)
    ! argument unit: s/kg
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: arg
    type(unit_p00_m10_p10_p00) :: s_unit_p00_m10_p10_p00
    s_unit_p00_m10_p10_p00%v = -arg%v
end function s_unit_p00_m10_p10_p00

subroutine wf_unit_m20_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2/m2/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_m10_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2/m2/kg"
end subroutine wf_unit_m20_m10_p20_p00

subroutine rf_unit_m20_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2/m2/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s2/m2/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_m10_p20_p00

elemental function a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v + right%v
end function a_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v - right%v
end function s_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    logical :: lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00 = left%v < right%v
end function lt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    logical :: le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00 = left%v <= right%v
end function le_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    logical :: gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00 = left%v > right%v
end function gt_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    logical :: ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00 = left%v >= right%v
end function ge_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function a_unit_m20_m10_p20_p00(arg)
    ! argument unit: s2/m2/kg
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: arg
    type(unit_m20_m10_p20_p00) :: a_unit_m20_m10_p20_p00
    a_unit_m20_m10_p20_p00%v = +arg%v
end function a_unit_m20_m10_p20_p00

elemental function s_unit_m20_m10_p20_p00(arg)
    ! argument unit: s2/m2/kg
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: arg
    type(unit_m20_m10_p20_p00) :: s_unit_m20_m10_p20_p00
    s_unit_m20_m10_p20_p00%v = -arg%v
end function s_unit_m20_m10_p20_p00

subroutine wf_unit_m20_p00_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2/m2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_p00_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2/m2"
end subroutine wf_unit_m20_p00_p20_p00

subroutine rf_unit_m20_p00_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2/m2") then
        iostat = 2
        iomsg = "Unit mismatch: s2/m2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_p00_p20_p00

elemental function a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00%v = left%v + right%v
end function a_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00%v = left%v - right%v
end function s_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    logical :: lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00 = left%v < right%v
end function lt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    logical :: le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00 = left%v <= right%v
end function le_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    logical :: gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00 = left%v > right%v
end function gt_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    logical :: ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00 = left%v >= right%v
end function ge_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function a_unit_m20_p00_p20_p00(arg)
    ! argument unit: s2/m2
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: arg
    type(unit_m20_p00_p20_p00) :: a_unit_m20_p00_p20_p00
    a_unit_m20_p00_p20_p00%v = +arg%v
end function a_unit_m20_p00_p20_p00

elemental function s_unit_m20_p00_p20_p00(arg)
    ! argument unit: s2/m2
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: arg
    type(unit_m20_p00_p20_p00) :: s_unit_m20_p00_p20_p00
    s_unit_m20_p00_p20_p00%v = -arg%v
end function s_unit_m20_p00_p20_p00

subroutine wf_unit_m20_p00_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2.K/m2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_p00_p20_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2.K/m2"
end subroutine wf_unit_m20_p00_p20_p10

subroutine rf_unit_m20_p00_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2.K/m2") then
        iostat = 2
        iomsg = "Unit mismatch: s2.K/m2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_p00_p20_p10

elemental function a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10%v = left%v + right%v
end function a_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10%v = left%v - right%v
end function s_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    logical :: lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10 = left%v < right%v
end function lt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    logical :: le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10 = left%v <= right%v
end function le_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    logical :: gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10 = left%v > right%v
end function gt_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    logical :: ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10 = left%v >= right%v
end function ge_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function a_unit_m20_p00_p20_p10(arg)
    ! argument unit: s2.K/m2
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: arg
    type(unit_m20_p00_p20_p10) :: a_unit_m20_p00_p20_p10
    a_unit_m20_p00_p20_p10%v = +arg%v
end function a_unit_m20_p00_p20_p10

elemental function s_unit_m20_p00_p20_p10(arg)
    ! argument unit: s2.K/m2
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: arg
    type(unit_m20_p00_p20_p10) :: s_unit_m20_p00_p20_p10
    s_unit_m20_p00_p20_p10%v = -arg%v
end function s_unit_m20_p00_p20_p10

subroutine wf_unit_m20_m10_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2.K/m2/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_m10_p20_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2.K/m2/kg"
end subroutine wf_unit_m20_m10_p20_p10

subroutine rf_unit_m20_m10_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2.K/m2/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s2.K/m2/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_m10_p20_p10

elemental function a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10%v = left%v + right%v
end function a_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10%v = left%v - right%v
end function s_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    logical :: lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10 = left%v < right%v
end function lt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    logical :: le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10 = left%v <= right%v
end function le_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    logical :: gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10 = left%v > right%v
end function gt_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    logical :: ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10 = left%v >= right%v
end function ge_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function a_unit_m20_m10_p20_p10(arg)
    ! argument unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: arg
    type(unit_m20_m10_p20_p10) :: a_unit_m20_m10_p20_p10
    a_unit_m20_m10_p20_p10%v = +arg%v
end function a_unit_m20_m10_p20_p10

elemental function s_unit_m20_m10_p20_p10(arg)
    ! argument unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: arg
    type(unit_m20_m10_p20_p10) :: s_unit_m20_m10_p20_p10
    s_unit_m20_m10_p20_p10%v = -arg%v
end function s_unit_m20_m10_p20_p10

subroutine wf_unit_p00_p00_p00_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p00_p00_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/K"
end subroutine wf_unit_p00_p00_p00_m10

subroutine rf_unit_p00_p00_p00_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/K") then
        iostat = 2
        iomsg = "Unit mismatch: 1/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p00_p00_m10

elemental function a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10%v = left%v + right%v
end function a_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10%v = left%v - right%v
end function s_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    logical :: lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10 = left%v < right%v
end function lt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    logical :: le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10 = left%v <= right%v
end function le_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    logical :: gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10 = left%v > right%v
end function gt_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    logical :: ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10 = left%v >= right%v
end function ge_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function a_unit_p00_p00_p00_m10(arg)
    ! argument unit: 1/K
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: arg
    type(unit_p00_p00_p00_m10) :: a_unit_p00_p00_p00_m10
    a_unit_p00_p00_p00_m10%v = +arg%v
end function a_unit_p00_p00_p00_m10

elemental function s_unit_p00_p00_p00_m10(arg)
    ! argument unit: 1/K
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: arg
    type(unit_p00_p00_p00_m10) :: s_unit_p00_p00_p00_m10
    s_unit_p00_p00_p00_m10%v = -arg%v
end function s_unit_p00_p00_p00_m10

subroutine wf_unit_p30_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_m10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3/kg"
end subroutine wf_unit_p30_m10_p00_p00

subroutine rf_unit_p30_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3/kg") then
        iostat = 2
        iomsg = "Unit mismatch: m3/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_m10_p00_p00

elemental function a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00%v = left%v + right%v
end function a_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00%v = left%v - right%v
end function s_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    logical :: lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00 = left%v < right%v
end function lt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    logical :: le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00 = left%v <= right%v
end function le_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    logical :: gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00 = left%v > right%v
end function gt_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    logical :: ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00 = left%v >= right%v
end function ge_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function a_unit_p30_m10_p00_p00(arg)
    ! argument unit: m3/kg
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: arg
    type(unit_p30_m10_p00_p00) :: a_unit_p30_m10_p00_p00
    a_unit_p30_m10_p00_p00%v = +arg%v
end function a_unit_p30_m10_p00_p00

elemental function s_unit_p30_m10_p00_p00(arg)
    ! argument unit: m3/kg
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: arg
    type(unit_p30_m10_p00_p00) :: s_unit_p30_m10_p00_p00
    s_unit_p30_m10_p00_p00%v = -arg%v
end function s_unit_p30_m10_p00_p00

subroutine wf_unit_p00_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p00_p00_m10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/s"
end subroutine wf_unit_p00_p00_m10_p00

subroutine rf_unit_p00_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/s") then
        iostat = 2
        iomsg = "Unit mismatch: 1/s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p00_p00_m10_p00

elemental function a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v + right%v
end function a_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v - right%v
end function s_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    logical :: lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00 = left%v < right%v
end function lt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    logical :: le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00 = left%v <= right%v
end function le_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    logical :: gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00 = left%v > right%v
end function gt_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    logical :: ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00 = left%v >= right%v
end function ge_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function a_unit_p00_p00_m10_p00(arg)
    ! argument unit: 1/s
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: arg
    type(unit_p00_p00_m10_p00) :: a_unit_p00_p00_m10_p00
    a_unit_p00_p00_m10_p00%v = +arg%v
end function a_unit_p00_p00_m10_p00

elemental function s_unit_p00_p00_m10_p00(arg)
    ! argument unit: 1/s
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: arg
    type(unit_p00_p00_m10_p00) :: s_unit_p00_p00_m10_p00
    s_unit_p00_p00_m10_p00%v = -arg%v
end function s_unit_p00_p00_m10_p00

subroutine wf_unit_m30_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: 1/m3
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m30_p00_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "1/m3"
end subroutine wf_unit_m30_p00_p00_p00

subroutine rf_unit_m30_p00_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "1/m3") then
        iostat = 2
        iomsg = "Unit mismatch: 1/m3 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m30_p00_p00_p00

elemental function a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v + right%v
end function a_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v - right%v
end function s_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    logical :: lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00 = left%v < right%v
end function lt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    logical :: le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00 = left%v <= right%v
end function le_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    logical :: gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00 = left%v > right%v
end function gt_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    logical :: ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00 = left%v >= right%v
end function ge_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function a_unit_m30_p00_p00_p00(arg)
    ! argument unit: 1/m3
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: arg
    type(unit_m30_p00_p00_p00) :: a_unit_m30_p00_p00_p00
    a_unit_m30_p00_p00_p00%v = +arg%v
end function a_unit_m30_p00_p00_p00

elemental function s_unit_m30_p00_p00_p00(arg)
    ! argument unit: 1/m3
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: arg
    type(unit_m30_p00_p00_p00) :: s_unit_m30_p00_p00_p00
    s_unit_m30_p00_p00_p00%v = -arg%v
end function s_unit_m30_p00_p00_p00

subroutine wf_unit_m10_p00_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2/m
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_p00_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2/m"
end subroutine wf_unit_m10_p00_p20_p00

subroutine rf_unit_m10_p00_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2/m") then
        iostat = 2
        iomsg = "Unit mismatch: s2/m expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_p00_p20_p00

elemental function a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00%v = left%v + right%v
end function a_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00%v = left%v - right%v
end function s_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    logical :: lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00 = left%v < right%v
end function lt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    logical :: le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00 = left%v <= right%v
end function le_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    logical :: gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00 = left%v > right%v
end function gt_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    logical :: ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00 = left%v >= right%v
end function ge_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function a_unit_m10_p00_p20_p00(arg)
    ! argument unit: s2/m
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: arg
    type(unit_m10_p00_p20_p00) :: a_unit_m10_p00_p20_p00
    a_unit_m10_p00_p20_p00%v = +arg%v
end function a_unit_m10_p00_p20_p00

elemental function s_unit_m10_p00_p20_p00(arg)
    ! argument unit: s2/m
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: arg
    type(unit_m10_p00_p20_p00) :: s_unit_m10_p00_p20_p00
    s_unit_m10_p00_p20_p00%v = -arg%v
end function s_unit_m10_p00_p20_p00

subroutine wf_unit_p20_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2/s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_p00_m10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2/s"
end subroutine wf_unit_p20_p00_m10_p00

subroutine rf_unit_p20_p00_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2/s") then
        iostat = 2
        iomsg = "Unit mismatch: m2/s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_p00_m10_p00

elemental function a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v + right%v
end function a_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v - right%v
end function s_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    logical :: lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00 = left%v < right%v
end function lt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    logical :: le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00 = left%v <= right%v
end function le_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    logical :: gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00 = left%v > right%v
end function gt_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    logical :: ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00 = left%v >= right%v
end function ge_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function a_unit_p20_p00_m10_p00(arg)
    ! argument unit: m2/s
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: arg
    type(unit_p20_p00_m10_p00) :: a_unit_p20_p00_m10_p00
    a_unit_p20_p00_m10_p00%v = +arg%v
end function a_unit_p20_p00_m10_p00

elemental function s_unit_p20_p00_m10_p00(arg)
    ! argument unit: m2/s
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: arg
    type(unit_p20_p00_m10_p00) :: s_unit_p20_p00_m10_p00
    s_unit_p20_p00_m10_p00%v = -arg%v
end function s_unit_p20_p00_m10_p00

subroutine wf_unit_p10_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.kg"
end subroutine wf_unit_p10_p10_p00_p00

subroutine rf_unit_p10_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.kg") then
        iostat = 2
        iomsg = "Unit mismatch: m.kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p10_p00_p00

elemental function a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00%v = left%v + right%v
end function a_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00%v = left%v - right%v
end function s_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    logical :: lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00 = left%v < right%v
end function lt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    logical :: le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00 = left%v <= right%v
end function le_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    logical :: gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00 = left%v > right%v
end function gt_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    logical :: ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00 = left%v >= right%v
end function ge_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function a_unit_p10_p10_p00_p00(arg)
    ! argument unit: m.kg
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: arg
    type(unit_p10_p10_p00_p00) :: a_unit_p10_p10_p00_p00
    a_unit_p10_p10_p00_p00%v = +arg%v
end function a_unit_p10_p10_p00_p00

elemental function s_unit_p10_p10_p00_p00(arg)
    ! argument unit: m.kg
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: arg
    type(unit_p10_p10_p00_p00) :: s_unit_p10_p10_p00_p00
    s_unit_p10_p10_p00_p00%v = -arg%v
end function s_unit_p10_p10_p00_p00

subroutine wf_unit_p10_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_m10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m/kg"
end subroutine wf_unit_p10_m10_p00_p00

subroutine rf_unit_p10_m10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m/kg") then
        iostat = 2
        iomsg = "Unit mismatch: m/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_m10_p00_p00

elemental function a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00%v = left%v + right%v
end function a_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00%v = left%v - right%v
end function s_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    logical :: lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00 = left%v < right%v
end function lt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    logical :: le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00 = left%v <= right%v
end function le_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    logical :: gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00 = left%v > right%v
end function gt_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    logical :: ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00 = left%v >= right%v
end function ge_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function a_unit_p10_m10_p00_p00(arg)
    ! argument unit: m/kg
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: arg
    type(unit_p10_m10_p00_p00) :: a_unit_p10_m10_p00_p00
    a_unit_p10_m10_p00_p00%v = +arg%v
end function a_unit_p10_m10_p00_p00

elemental function s_unit_p10_m10_p00_p00(arg)
    ! argument unit: m/kg
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: arg
    type(unit_p10_m10_p00_p00) :: s_unit_p10_m10_p00_p00
    s_unit_p10_m10_p00_p00%v = -arg%v
end function s_unit_p10_m10_p00_p00

subroutine wf_unit_p10_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.kg/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p10_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.kg/s2"
end subroutine wf_unit_p10_p10_m20_p00

subroutine rf_unit_p10_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.kg/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m.kg/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p10_m20_p00

elemental function a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v + right%v
end function a_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v - right%v
end function s_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    logical :: lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00 = left%v < right%v
end function lt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    logical :: le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00 = left%v <= right%v
end function le_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    logical :: gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00 = left%v > right%v
end function gt_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    logical :: ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00 = left%v >= right%v
end function ge_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function a_unit_p10_p10_m20_p00(arg)
    ! argument unit: m.kg/s2
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: arg
    type(unit_p10_p10_m20_p00) :: a_unit_p10_p10_m20_p00
    a_unit_p10_p10_m20_p00%v = +arg%v
end function a_unit_p10_p10_m20_p00

elemental function s_unit_p10_p10_m20_p00(arg)
    ! argument unit: m.kg/s2
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: arg
    type(unit_p10_p10_m20_p00) :: s_unit_p10_p10_m20_p00
    s_unit_p10_p10_m20_p00%v = -arg%v
end function s_unit_p10_p10_m20_p00

subroutine wf_unit_p20_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m2.s2/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p20_m10_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m2.s2/kg"
end subroutine wf_unit_p20_m10_p20_p00

subroutine rf_unit_p20_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m2.s2/kg") then
        iostat = 2
        iomsg = "Unit mismatch: m2.s2/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p20_m10_p20_p00

elemental function a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v + right%v
end function a_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v - right%v
end function s_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    logical :: lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00 = left%v < right%v
end function lt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    logical :: le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00 = left%v <= right%v
end function le_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    logical :: gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00 = left%v > right%v
end function gt_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    logical :: ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00 = left%v >= right%v
end function ge_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function a_unit_p20_m10_p20_p00(arg)
    ! argument unit: m2.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: arg
    type(unit_p20_m10_p20_p00) :: a_unit_p20_m10_p20_p00
    a_unit_p20_m10_p20_p00%v = +arg%v
end function a_unit_p20_m10_p20_p00

elemental function s_unit_p20_m10_p20_p00(arg)
    ! argument unit: m2.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: arg
    type(unit_p20_m10_p20_p00) :: s_unit_p20_m10_p20_p00
    s_unit_p20_m10_p20_p00%v = -arg%v
end function s_unit_p20_m10_p20_p00

subroutine wf_unit_p10_p10_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.kg/s
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p10_m10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.kg/s"
end subroutine wf_unit_p10_p10_m10_p00

subroutine rf_unit_p10_p10_m10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.kg/s") then
        iostat = 2
        iomsg = "Unit mismatch: m.kg/s expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p10_m10_p00

elemental function a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00%v = left%v + right%v
end function a_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00%v = left%v - right%v
end function s_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    logical :: lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00 = left%v < right%v
end function lt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    logical :: le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00 = left%v <= right%v
end function le_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    logical :: gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00 = left%v > right%v
end function gt_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    logical :: ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00 = left%v >= right%v
end function ge_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function a_unit_p10_p10_m10_p00(arg)
    ! argument unit: m.kg/s
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: arg
    type(unit_p10_p10_m10_p00) :: a_unit_p10_p10_m10_p00
    a_unit_p10_p10_m10_p00%v = +arg%v
end function a_unit_p10_p10_m10_p00

elemental function s_unit_p10_p10_m10_p00(arg)
    ! argument unit: m.kg/s
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: arg
    type(unit_p10_p10_m10_p00) :: s_unit_p10_p10_m10_p00
    s_unit_p10_p10_m10_p00%v = -arg%v
end function s_unit_p10_p10_m10_p00

subroutine wf_unit_p10_m10_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.s/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_m10_p10_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.s/kg"
end subroutine wf_unit_p10_m10_p10_p00

subroutine rf_unit_p10_m10_p10_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.s/kg") then
        iostat = 2
        iomsg = "Unit mismatch: m.s/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_m10_p10_p00

elemental function a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00%v = left%v + right%v
end function a_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00%v = left%v - right%v
end function s_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    logical :: lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00 = left%v < right%v
end function lt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    logical :: le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00 = left%v <= right%v
end function le_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    logical :: gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00 = left%v > right%v
end function gt_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    logical :: ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00 = left%v >= right%v
end function ge_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function a_unit_p10_m10_p10_p00(arg)
    ! argument unit: m.s/kg
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: arg
    type(unit_p10_m10_p10_p00) :: a_unit_p10_m10_p10_p00
    a_unit_p10_m10_p10_p00%v = +arg%v
end function a_unit_p10_m10_p10_p00

elemental function s_unit_p10_m10_p10_p00(arg)
    ! argument unit: m.s/kg
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: arg
    type(unit_p10_m10_p10_p00) :: s_unit_p10_m10_p10_p00
    s_unit_p10_m10_p10_p00%v = -arg%v
end function s_unit_p10_m10_p10_p00

subroutine wf_unit_p30_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3.kg/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_p10_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3.kg/s2"
end subroutine wf_unit_p30_p10_m20_p00

subroutine rf_unit_p30_p10_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3.kg/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m3.kg/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_p10_m20_p00

elemental function a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v + right%v
end function a_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v - right%v
end function s_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    logical :: lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00 = left%v < right%v
end function lt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    logical :: le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00 = left%v <= right%v
end function le_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    logical :: gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00 = left%v > right%v
end function gt_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    logical :: ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00 = left%v >= right%v
end function ge_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function a_unit_p30_p10_m20_p00(arg)
    ! argument unit: m3.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: arg
    type(unit_p30_p10_m20_p00) :: a_unit_p30_p10_m20_p00
    a_unit_p30_p10_m20_p00%v = +arg%v
end function a_unit_p30_p10_m20_p00

elemental function s_unit_p30_p10_m20_p00(arg)
    ! argument unit: m3.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: arg
    type(unit_p30_p10_m20_p00) :: s_unit_p30_p10_m20_p00
    s_unit_p30_p10_m20_p00%v = -arg%v
end function s_unit_p30_p10_m20_p00

subroutine wf_unit_m10_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2/m/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_m10_p20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2/m/kg"
end subroutine wf_unit_m10_m10_p20_p00

subroutine rf_unit_m10_m10_p20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2/m/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s2/m/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_m10_p20_p00

elemental function a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v + right%v
end function a_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v - right%v
end function s_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    logical :: lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00 = left%v < right%v
end function lt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    logical :: le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00 = left%v <= right%v
end function le_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    logical :: gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00 = left%v > right%v
end function gt_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    logical :: ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00 = left%v >= right%v
end function ge_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function a_unit_m10_m10_p20_p00(arg)
    ! argument unit: s2/m/kg
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: arg
    type(unit_m10_m10_p20_p00) :: a_unit_m10_m10_p20_p00
    a_unit_m10_m10_p20_p00%v = +arg%v
end function a_unit_m10_m10_p20_p00

elemental function s_unit_m10_m10_p20_p00(arg)
    ! argument unit: s2/m/kg
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: arg
    type(unit_m10_m10_p20_p00) :: s_unit_m10_m10_p20_p00
    s_unit_m10_m10_p20_p00%v = -arg%v
end function s_unit_m10_m10_p20_p00

subroutine wf_unit_p30_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3/s2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_p00_m20_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3/s2"
end subroutine wf_unit_p30_p00_m20_p00

subroutine rf_unit_p30_p00_m20_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3/s2") then
        iostat = 2
        iomsg = "Unit mismatch: m3/s2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_p00_m20_p00

elemental function a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00%v = left%v + right%v
end function a_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00%v = left%v - right%v
end function s_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    logical :: lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00 = left%v < right%v
end function lt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    logical :: le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00 = left%v <= right%v
end function le_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    logical :: gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00 = left%v > right%v
end function gt_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    logical :: ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00 = left%v >= right%v
end function ge_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function a_unit_p30_p00_m20_p00(arg)
    ! argument unit: m3/s2
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: arg
    type(unit_p30_p00_m20_p00) :: a_unit_p30_p00_m20_p00
    a_unit_p30_p00_m20_p00%v = +arg%v
end function a_unit_p30_p00_m20_p00

elemental function s_unit_p30_p00_m20_p00(arg)
    ! argument unit: m3/s2
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: arg
    type(unit_p30_p00_m20_p00) :: s_unit_p30_p00_m20_p00
    s_unit_p30_p00_m20_p00%v = -arg%v
end function s_unit_p30_p00_m20_p00

subroutine wf_unit_p30_p00_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3/s2/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_p00_m20_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3/s2/K"
end subroutine wf_unit_p30_p00_m20_m10

subroutine rf_unit_p30_p00_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3/s2/K") then
        iostat = 2
        iomsg = "Unit mismatch: m3/s2/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_p00_m20_m10

elemental function a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10%v = left%v + right%v
end function a_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10%v = left%v - right%v
end function s_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    logical :: lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10 = left%v < right%v
end function lt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    logical :: le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10 = left%v <= right%v
end function le_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    logical :: gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10 = left%v > right%v
end function gt_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    logical :: ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10 = left%v >= right%v
end function ge_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function a_unit_p30_p00_m20_m10(arg)
    ! argument unit: m3/s2/K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: arg
    type(unit_p30_p00_m20_m10) :: a_unit_p30_p00_m20_m10
    a_unit_p30_p00_m20_m10%v = +arg%v
end function a_unit_p30_p00_m20_m10

elemental function s_unit_p30_p00_m20_m10(arg)
    ! argument unit: m3/s2/K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: arg
    type(unit_p30_p00_m20_m10) :: s_unit_p30_p00_m20_m10
    s_unit_p30_p00_m20_m10%v = -arg%v
end function s_unit_p30_p00_m20_m10

subroutine wf_unit_m10_p00_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2.K/m
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_p00_p20_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2.K/m"
end subroutine wf_unit_m10_p00_p20_p10

subroutine rf_unit_m10_p00_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2.K/m") then
        iostat = 2
        iomsg = "Unit mismatch: s2.K/m expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_p00_p20_p10

elemental function a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10%v = left%v + right%v
end function a_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10%v = left%v - right%v
end function s_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    logical :: lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10 = left%v < right%v
end function lt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    logical :: le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10 = left%v <= right%v
end function le_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    logical :: gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10 = left%v > right%v
end function gt_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    logical :: ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10 = left%v >= right%v
end function ge_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function a_unit_m10_p00_p20_p10(arg)
    ! argument unit: s2.K/m
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: arg
    type(unit_m10_p00_p20_p10) :: a_unit_m10_p00_p20_p10
    a_unit_m10_p00_p20_p10%v = +arg%v
end function a_unit_m10_p00_p20_p10

elemental function s_unit_m10_p00_p20_p10(arg)
    ! argument unit: s2.K/m
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: arg
    type(unit_m10_p00_p20_p10) :: s_unit_m10_p00_p20_p10
    s_unit_m10_p00_p20_p10%v = -arg%v
end function s_unit_m10_p00_p20_p10

subroutine wf_unit_p30_p10_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m3.kg/s2/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p30_p10_m20_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m3.kg/s2/K"
end subroutine wf_unit_p30_p10_m20_m10

subroutine rf_unit_p30_p10_m20_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m3.kg/s2/K") then
        iostat = 2
        iomsg = "Unit mismatch: m3.kg/s2/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p30_p10_m20_m10

elemental function a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10%v = left%v + right%v
end function a_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10%v = left%v - right%v
end function s_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    logical :: lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10 = left%v < right%v
end function lt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    logical :: le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10 = left%v <= right%v
end function le_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    logical :: gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10 = left%v > right%v
end function gt_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    logical :: ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10 = left%v >= right%v
end function ge_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function a_unit_p30_p10_m20_m10(arg)
    ! argument unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: arg
    type(unit_p30_p10_m20_m10) :: a_unit_p30_p10_m20_m10
    a_unit_p30_p10_m20_m10%v = +arg%v
end function a_unit_p30_p10_m20_m10

elemental function s_unit_p30_p10_m20_m10(arg)
    ! argument unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: arg
    type(unit_p30_p10_m20_m10) :: s_unit_p30_p10_m20_m10
    s_unit_p30_p10_m20_m10%v = -arg%v
end function s_unit_p30_p10_m20_m10

subroutine wf_unit_m10_m10_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: s2.K/m/kg
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m10_m10_p20_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "s2.K/m/kg"
end subroutine wf_unit_m10_m10_p20_p10

subroutine rf_unit_m10_m10_p20_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "s2.K/m/kg") then
        iostat = 2
        iomsg = "Unit mismatch: s2.K/m/kg expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m10_m10_p20_p10

elemental function a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10%v = left%v + right%v
end function a_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10%v = left%v - right%v
end function s_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    logical :: lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10 = left%v < right%v
end function lt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    logical :: le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10 = left%v <= right%v
end function le_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    logical :: gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10 = left%v > right%v
end function gt_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    logical :: ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10 = left%v >= right%v
end function ge_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function a_unit_m10_m10_p20_p10(arg)
    ! argument unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: arg
    type(unit_m10_m10_p20_p10) :: a_unit_m10_m10_p20_p10
    a_unit_m10_m10_p20_p10%v = +arg%v
end function a_unit_m10_m10_p20_p10

elemental function s_unit_m10_m10_p20_p10(arg)
    ! argument unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: arg
    type(unit_m10_m10_p20_p10) :: s_unit_m10_m10_p20_p10
    s_unit_m10_m10_p20_p10%v = -arg%v
end function s_unit_m10_m10_p20_p10

subroutine wf_unit_p10_p00_p00_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m.K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p00_p00_p10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m.K"
end subroutine wf_unit_p10_p00_p00_p10

subroutine rf_unit_p10_p00_p00_p10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m.K
    class(unit_p10_p00_p00_p10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m.K") then
        iostat = 2
        iomsg = "Unit mismatch: m.K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p00_p00_p10

elemental function a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10%v = left%v + right%v
end function a_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10%v = left%v - right%v
end function s_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    logical :: lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10 = left%v < right%v
end function lt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    logical :: le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10 = left%v <= right%v
end function le_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    logical :: gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10 = left%v > right%v
end function gt_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    logical :: ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10 = left%v >= right%v
end function ge_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function a_unit_p10_p00_p00_p10(arg)
    ! argument unit: m.K
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: arg
    type(unit_p10_p00_p00_p10) :: a_unit_p10_p00_p00_p10
    a_unit_p10_p00_p00_p10%v = +arg%v
end function a_unit_p10_p00_p00_p10

elemental function s_unit_p10_p00_p00_p10(arg)
    ! argument unit: m.K
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: arg
    type(unit_p10_p00_p00_p10) :: s_unit_p10_p00_p00_p10
    s_unit_p10_p00_p00_p10%v = -arg%v
end function s_unit_p10_p00_p00_p10

subroutine wf_unit_p10_p00_p00_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: m/K
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_p10_p00_p00_m10), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "m/K"
end subroutine wf_unit_p10_p00_p00_m10

subroutine rf_unit_p10_p00_p00_m10(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: m/K
    class(unit_p10_p00_p00_m10), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "m/K") then
        iostat = 2
        iomsg = "Unit mismatch: m/K expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_p10_p00_p00_m10

elemental function a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10%v = left%v + right%v
end function a_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10%v = left%v - right%v
end function s_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    logical :: lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10 = left%v < right%v
end function lt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    logical :: le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10 = left%v <= right%v
end function le_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    logical :: gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10 = left%v > right%v
end function gt_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    logical :: ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10 = left%v >= right%v
end function ge_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function a_unit_p10_p00_p00_m10(arg)
    ! argument unit: m/K
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: arg
    type(unit_p10_p00_p00_m10) :: a_unit_p10_p00_p00_m10
    a_unit_p10_p00_p00_m10%v = +arg%v
end function a_unit_p10_p00_p00_m10

elemental function s_unit_p10_p00_p00_m10(arg)
    ! argument unit: m/K
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: arg
    type(unit_p10_p00_p00_m10) :: s_unit_p10_p00_p00_m10
    s_unit_p10_p00_p00_m10%v = -arg%v
end function s_unit_p10_p00_p00_m10

subroutine wf_unit_m20_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    ! unit: kg/m2
    use, intrinsic :: iso_fortran_env, only: compiler_version
    class(unit_m20_p10_p00_p00), intent(in) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=16) :: pfmt
    character(len=1)  :: space
    if (iotype == "LISTDIRECTED" .or. iotype == "DTg0" .or. iotype == "NAMELIST") then
        if (index(compiler_version(), "XL Fortran") == 0) then
            pfmt = "(g0, a, a)"
        else
            pfmt = "(f0.6, a, a)"
        end if
    else
        write(pfmt, "(2a, i0, a, i0, a)") "(", iotype(3:), vlist(1), ".", vlist(2), ", a, a)"
    end if
    if (iotype == "NAMELIST") then
        space = "_"
    else
        space = " "
    end if
    write(unit, fmt=trim(pfmt), iostat=iostat, iomsg=iomsg) dtv%v, space, "kg/m2"
end subroutine wf_unit_m20_p10_p00_p00

subroutine rf_unit_m20_p10_p00_p00(dtv, unit, iotype, vlist, iostat, iomsg)
    use, intrinsic :: iso_fortran_env, only: IOSTAT_END, IOSTAT_EOR
    ! unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in out) :: dtv
    integer, intent(in) :: unit
    character(len=*), intent(in) :: iotype
    integer, intent(in) :: vlist(:)
    integer, intent(out) :: iostat
    character(len=*), intent(in out) :: iomsg
    character(len=2048) :: full_input, value_char, msg
    character(len=64) :: unit_char
    integer :: underscore_index, end_index
    read(unit, fmt="(a)", iostat=iostat, iomsg=msg) full_input
    if ((iostat == IOSTAT_END) .or. (iostat == IOSTAT_EOR)) then
        iostat = 0
        msg = ""
    end if
    full_input = adjustl(full_input)
    underscore_index = index(full_input, "_")
    if (index(full_input, "/") > 0) then
        end_index = index(full_input, "/") - 1
    else
        end_index = len(trim(full_input))
    end if
    if (underscore_index == 0) then
        underscore_index = end_index + 1
        unit_char = ""
    else
        unit_char = full_input(underscore_index+1:end_index)
    end if
    value_char = full_input(1:underscore_index-1)
    read(unit=value_char, fmt=*, iostat=iostat, iomsg=msg) dtv%v
    if (iostat /= 0) then
        iomsg = trim(msg)
        return
    end if
    if (len(trim(unit_char)) == 0) then
        iostat = 1
        iomsg = "Unit expected, none appeared: " // trim(full_input)
        return
    end if
    if (trim(unit_char) /= "kg/m2") then
        iostat = 2
        iomsg = "Unit mismatch: kg/m2 expected, " // trim(unit_char) // " appeared."
        return
    end if
    if ((iotype /= "DT") .and. (iotype /= "NAMELIST")) then
        iostat = 3
        iomsg = 'Only iotype="DT" and iotype="NAMELIST" are implemented for read. iotype=' // iotype
        return
    end if
    if (size(vlist) > 0) then
        iostat = 4
        iomsg = "vlist must be not specified for read."
        return
    end if
end subroutine rf_unit_m20_p10_p00_p00

elemental function a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v + right%v
end function a_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v - right%v
end function s_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    logical :: lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00 = left%v < right%v
end function lt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    logical :: le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00 = left%v <= right%v
end function le_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    logical :: gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00 = left%v > right%v
end function gt_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    logical :: ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00 = left%v >= right%v
end function ge_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function a_unit_m20_p10_p00_p00(arg)
    ! argument unit: kg/m2
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: arg
    type(unit_m20_p10_p00_p00) :: a_unit_m20_p10_p00_p00
    a_unit_m20_p10_p00_p00%v = +arg%v
end function a_unit_m20_p10_p00_p00

elemental function s_unit_m20_p10_p00_p00(arg)
    ! argument unit: kg/m2
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: arg
    type(unit_m20_p10_p00_p00) :: s_unit_m20_p10_p00_p00
    s_unit_m20_p10_p00_p00%v = -arg%v
end function s_unit_m20_p10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_real_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    real, intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_real_unit_p00_p00_p00_p00
    m_real_unit_p00_p00_p00_p00%v = left * right%v
end function m_real_unit_p00_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_real(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_p00_p00_real
    m_unit_p00_p00_p00_p00_real%v = left%v * right
end function m_unit_p00_p00_p00_p00_real

elemental function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_real_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    real, intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_real_unit_p00_p00_p00_p00
    d_real_unit_p00_p00_p00_p00%v = left / right%v
end function d_real_unit_p00_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_real(left, right)
    ! left unit: 1
    ! right unit: 1
    ! result unit: 1
    class(unit_p00_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_p00_p00_real
    d_unit_p00_p00_p00_p00_real%v = left%v / right
end function d_unit_p00_p00_p00_p00_real

elemental function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m
    ! result unit: m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00

elemental function m_real_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m
    ! result unit: m
    real, intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_real_unit_p10_p00_p00_p00
    m_real_unit_p10_p00_p00_p00%v = left * right%v
end function m_real_unit_p10_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m
    ! result unit: 1/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_real_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m
    ! result unit: 1/m
    real, intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_real_unit_p10_p00_p00_p00
    d_real_unit_p10_p00_p00_p00%v = left / right%v
end function d_real_unit_p10_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m/s
    ! result unit: m/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00

elemental function m_real_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m/s
    ! result unit: m/s
    real, intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_real_unit_p10_p00_m10_p00
    m_real_unit_p10_p00_m10_p00%v = left * right%v
end function m_real_unit_p10_p00_m10_p00

elemental function d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m/s
    ! result unit: s/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00
    d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p10_p00_m10_p00

elemental function d_real_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m/s
    ! result unit: s/m
    real, intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_real_unit_p10_p00_m10_p00
    d_real_unit_p10_p00_m10_p00%v = left / right%v
end function d_real_unit_p10_p00_m10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m2
    ! result unit: m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_real_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m2
    ! result unit: m2
    real, intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_real_unit_p20_p00_p00_p00
    m_real_unit_p20_p00_p00_p00%v = left * right%v
end function m_real_unit_p20_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m2
    ! result unit: 1/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p20_p00_p00_p00

elemental function d_real_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m2
    ! result unit: 1/m2
    real, intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_real_unit_p20_p00_p00_p00
    d_real_unit_p20_p00_p00_p00%v = left / right%v
end function d_real_unit_p20_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg
    ! result unit: kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00

elemental function m_real_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg
    ! result unit: kg
    real, intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_real_unit_p00_p10_p00_p00
    m_real_unit_p00_p10_p00_p00%v = left * right%v
end function m_real_unit_p00_p10_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg
    ! result unit: 1/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00
    d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p10_p00_p00

elemental function d_real_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg
    ! result unit: 1/kg
    real, intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_real_unit_p00_p10_p00_p00
    d_real_unit_p00_p10_p00_p00%v = left / right%v
end function d_real_unit_p00_p10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/kg
    ! result unit: 1/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00

elemental function m_real_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/kg
    ! result unit: 1/kg
    real, intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_real_unit_p00_m10_p00_p00
    m_real_unit_p00_m10_p00_p00%v = left * right%v
end function m_real_unit_p00_m10_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/kg
    ! result unit: kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00
    d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_m10_p00_p00

elemental function d_real_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/kg
    ! result unit: kg
    real, intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_real_unit_p00_m10_p00_p00
    d_real_unit_p00_m10_p00_p00%v = left / right%v
end function d_real_unit_p00_m10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s2
    ! result unit: kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00

elemental function m_real_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s2
    ! result unit: kg/s2
    real, intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_real_unit_p00_p10_m20_p00
    m_real_unit_p00_p10_m20_p00%v = left * right%v
end function m_real_unit_p00_p10_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s2
    ! result unit: s2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00
    d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_real_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s2
    ! result unit: s2/kg
    real, intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_real_unit_p00_p10_m20_p00
    d_real_unit_p00_p10_m20_p00%v = left / right%v
end function d_real_unit_p00_p10_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m/s2
    ! result unit: kg/m/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00

elemental function m_real_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m/s2
    ! result unit: kg/m/s2
    real, intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_real_unit_m10_p10_m20_p00
    m_real_unit_m10_p10_m20_p00%v = left * right%v
end function m_real_unit_m10_p10_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m/s2
    ! result unit: m.s2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00
    d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m10_p10_m20_p00

elemental function d_real_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m/s2
    ! result unit: m.s2/kg
    real, intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_real_unit_m10_p10_m20_p00
    d_real_unit_m10_p10_m20_p00%v = left / right%v
end function d_real_unit_m10_p10_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s
    ! result unit: kg/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00

elemental function m_real_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s
    ! result unit: kg/s
    real, intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_real_unit_p00_p10_m10_p00
    m_real_unit_p00_p10_m10_p00%v = left * right%v
end function m_real_unit_p00_p10_m10_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s
    ! result unit: s/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00
    d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p10_m10_p00

elemental function d_real_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: kg/s
    ! result unit: s/kg
    real, intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_real_unit_p00_p10_m10_p00
    d_real_unit_p00_p10_m10_p00%v = left / right%v
end function d_real_unit_p00_p10_m10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00

elemental function m_real_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2
    ! result unit: m2.kg/s2
    real, intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_real_unit_p20_p10_m20_p00
    m_real_unit_p20_p10_m20_p00%v = left * right%v
end function m_real_unit_p20_p10_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2
    ! result unit: s2/m2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00
    d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p20_p10_m20_p00

elemental function d_real_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2
    ! result unit: s2/m2/kg
    real, intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_real_unit_p20_p10_m20_p00
    d_real_unit_p20_p10_m20_p00%v = left / right%v
end function d_real_unit_p20_p10_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s2
    ! result unit: m2/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00

elemental function m_real_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s2
    ! result unit: m2/s2
    real, intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_real_unit_p20_p00_m20_p00
    m_real_unit_p20_p00_m20_p00%v = left * right%v
end function m_real_unit_p20_p00_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s2
    ! result unit: s2/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00
    d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p20_p00_m20_p00

elemental function d_real_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s2
    ! result unit: s2/m2
    real, intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_real_unit_p20_p00_m20_p00
    d_real_unit_p20_p00_m20_p00%v = left / right%v
end function d_real_unit_p20_p00_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2/s2/K
    ! result unit: m2/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10

elemental function m_real_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2/s2/K
    ! result unit: m2/s2/K
    real, intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_real_unit_p20_p00_m20_m10
    m_real_unit_p20_p00_m20_m10%v = left * right%v
end function m_real_unit_p20_p00_m20_m10

elemental function d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2/s2/K
    ! result unit: s2.K/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10
    d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p20_p00_m20_m10

elemental function d_real_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2/s2/K
    ! result unit: s2.K/m2
    real, intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_real_unit_p20_p00_m20_m10
    d_real_unit_p20_p00_m20_m10%v = left / right%v
end function d_real_unit_p20_p00_m20_m10

elemental function m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10

elemental function m_real_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2/K
    ! result unit: m2.kg/s2/K
    real, intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_real_unit_p20_p10_m20_m10
    m_real_unit_p20_p10_m20_m10%v = left * right%v
end function m_real_unit_p20_p10_m20_m10

elemental function d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2/K
    ! result unit: s2.K/m2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10
    d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p20_p10_m20_m10

elemental function d_real_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m2.kg/s2/K
    ! result unit: s2.K/m2/kg
    real, intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_real_unit_p20_p10_m20_m10
    d_real_unit_p20_p10_m20_m10%v = left / right%v
end function d_real_unit_p20_p10_m20_m10

elemental function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: K
    ! result unit: K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10

elemental function m_real_unit_p00_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: K
    ! result unit: K
    real, intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_real_unit_p00_p00_p00_p10
    m_real_unit_p00_p00_p00_p10%v = left * right%v
end function m_real_unit_p00_p00_p00_p10

elemental function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: K
    ! result unit: 1/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10
    d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_p10

elemental function d_real_unit_p00_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: K
    ! result unit: 1/K
    real, intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_real_unit_p00_p00_p00_p10
    d_real_unit_p00_p00_p00_p10%v = left / right%v
end function d_real_unit_p00_p00_p00_p10

elemental function m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m3
    ! result unit: kg/m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00

elemental function m_real_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m3
    ! result unit: kg/m3
    real, intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_real_unit_m30_p10_p00_p00
    m_real_unit_m30_p10_p00_p00%v = left * right%v
end function m_real_unit_m30_p10_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m3
    ! result unit: m3/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00
    d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m30_p10_p00_p00

elemental function d_real_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m3
    ! result unit: m3/kg
    real, intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_real_unit_m30_p10_p00_p00
    d_real_unit_m30_p10_p00_p00%v = left / right%v
end function d_real_unit_m30_p10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s
    ! result unit: s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00

elemental function m_real_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s
    ! result unit: s
    real, intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_real_unit_p00_p00_p10_p00
    m_real_unit_p00_p00_p10_p00%v = left * right%v
end function m_real_unit_p00_p00_p10_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s
    ! result unit: 1/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00
    d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p00_p10_p00

elemental function d_real_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s
    ! result unit: 1/s
    real, intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_real_unit_p00_p00_p10_p00
    d_real_unit_p00_p00_p10_p00%v = left / right%v
end function d_real_unit_p00_p00_p10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3
    ! result unit: m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00

elemental function m_real_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3
    ! result unit: m3
    real, intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_real_unit_p30_p00_p00_p00
    m_real_unit_p30_p00_p00_p00%v = left * right%v
end function m_real_unit_p30_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3
    ! result unit: 1/m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p30_p00_p00_p00

elemental function d_real_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3
    ! result unit: 1/m3
    real, intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_real_unit_p30_p00_p00_p00
    d_real_unit_p30_p00_p00_p00%v = left / right%v
end function d_real_unit_p30_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m/s2
    ! result unit: m/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00

elemental function m_real_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m/s2
    ! result unit: m/s2
    real, intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_real_unit_p10_p00_m20_p00
    m_real_unit_p10_p00_m20_p00%v = left * right%v
end function m_real_unit_p10_p00_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m/s2
    ! result unit: s2/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00
    d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p10_p00_m20_p00

elemental function d_real_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m/s2
    ! result unit: s2/m
    real, intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_real_unit_p10_p00_m20_p00
    d_real_unit_p10_p00_m20_p00%v = left / right%v
end function d_real_unit_p10_p00_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m
    ! result unit: 1/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00

elemental function m_real_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m
    ! result unit: 1/m
    real, intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_real_unit_m10_p00_p00_p00
    m_real_unit_m10_p00_p00_p00%v = left * right%v
end function m_real_unit_m10_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m
    ! result unit: m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_real_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m
    ! result unit: m
    real, intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_real_unit_m10_p00_p00_p00
    d_real_unit_m10_p00_p00_p00%v = left / right%v
end function d_real_unit_m10_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/m
    ! result unit: s/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00

elemental function m_real_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/m
    ! result unit: s/m
    real, intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_real_unit_m10_p00_p10_p00
    m_real_unit_m10_p00_p10_p00%v = left * right%v
end function m_real_unit_m10_p00_p10_p00

elemental function d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/m
    ! result unit: m/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00
    d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m10_p00_p10_p00

elemental function d_real_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/m
    ! result unit: m/s
    real, intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_real_unit_m10_p00_p10_p00
    d_real_unit_m10_p00_p10_p00%v = left / right%v
end function d_real_unit_m10_p00_p10_p00

elemental function m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m2
    ! result unit: 1/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_real_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m2
    ! result unit: 1/m2
    real, intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_real_unit_m20_p00_p00_p00
    m_real_unit_m20_p00_p00_p00%v = left * right%v
end function m_real_unit_m20_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m2
    ! result unit: m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m20_p00_p00_p00

elemental function d_real_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m2
    ! result unit: m2
    real, intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_real_unit_m20_p00_p00_p00
    d_real_unit_m20_p00_p00_p00%v = left / right%v
end function d_real_unit_m20_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/kg
    ! result unit: s2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00

elemental function m_real_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/kg
    ! result unit: s2/kg
    real, intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_real_unit_p00_m10_p20_p00
    m_real_unit_p00_m10_p20_p00%v = left * right%v
end function m_real_unit_p00_m10_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/kg
    ! result unit: kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00
    d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_real_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/kg
    ! result unit: kg/s2
    real, intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_real_unit_p00_m10_p20_p00
    d_real_unit_p00_m10_p20_p00%v = left / right%v
end function d_real_unit_p00_m10_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m.s2/kg
    ! result unit: m.s2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00

elemental function m_real_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m.s2/kg
    ! result unit: m.s2/kg
    real, intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_real_unit_p10_m10_p20_p00
    m_real_unit_p10_m10_p20_p00%v = left * right%v
end function m_real_unit_p10_m10_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m.s2/kg
    ! result unit: kg/m/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00
    d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p10_m10_p20_p00

elemental function d_real_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m.s2/kg
    ! result unit: kg/m/s2
    real, intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_real_unit_p10_m10_p20_p00
    d_real_unit_p10_m10_p20_p00%v = left / right%v
end function d_real_unit_p10_m10_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/kg
    ! result unit: s/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00

elemental function m_real_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/kg
    ! result unit: s/kg
    real, intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_real_unit_p00_m10_p10_p00
    m_real_unit_p00_m10_p10_p00%v = left * right%v
end function m_real_unit_p00_m10_p10_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/kg
    ! result unit: kg/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00
    d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_m10_p10_p00

elemental function d_real_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: s/kg
    ! result unit: kg/s
    real, intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_real_unit_p00_m10_p10_p00
    d_real_unit_p00_m10_p10_p00%v = left / right%v
end function d_real_unit_p00_m10_p10_p00

elemental function m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2/kg
    ! result unit: s2/m2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00

elemental function m_real_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2/kg
    ! result unit: s2/m2/kg
    real, intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_real_unit_m20_m10_p20_p00
    m_real_unit_m20_m10_p20_p00%v = left * right%v
end function m_real_unit_m20_m10_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2/kg
    ! result unit: m2.kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00
    d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p00

elemental function d_real_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2/kg
    ! result unit: m2.kg/s2
    real, intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_real_unit_m20_m10_p20_p00
    d_real_unit_m20_m10_p20_p00%v = left / right%v
end function d_real_unit_m20_m10_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2
    ! result unit: s2/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00

elemental function m_real_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2
    ! result unit: s2/m2
    real, intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_real_unit_m20_p00_p20_p00
    m_real_unit_m20_p00_p20_p00%v = left * right%v
end function m_real_unit_m20_p00_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2
    ! result unit: m2/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00
    d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p00

elemental function d_real_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m2
    ! result unit: m2/s2
    real, intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_real_unit_m20_p00_p20_p00
    d_real_unit_m20_p00_p20_p00%v = left / right%v
end function d_real_unit_m20_p00_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2
    ! result unit: s2.K/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10

elemental function m_real_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2
    ! result unit: s2.K/m2
    real, intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_real_unit_m20_p00_p20_p10
    m_real_unit_m20_p00_p20_p10%v = left * right%v
end function m_real_unit_m20_p00_p20_p10

elemental function d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2
    ! result unit: m2/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10
    d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m20_p00_p20_p10

elemental function d_real_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2
    ! result unit: m2/s2/K
    real, intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_real_unit_m20_p00_p20_p10
    d_real_unit_m20_p00_p20_p10%v = left / right%v
end function d_real_unit_m20_p00_p20_p10

elemental function m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10

elemental function m_real_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m2/kg
    real, intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_real_unit_m20_m10_p20_p10
    m_real_unit_m20_m10_p20_p10%v = left * right%v
end function m_real_unit_m20_m10_p20_p10

elemental function d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2/kg
    ! result unit: m2.kg/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10
    d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m20_m10_p20_p10

elemental function d_real_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m2/kg
    ! result unit: m2.kg/s2/K
    real, intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_real_unit_m20_m10_p20_p10
    d_real_unit_m20_m10_p20_p10%v = left / right%v
end function d_real_unit_m20_m10_p20_p10

elemental function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: 1/K
    ! result unit: 1/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10

elemental function m_real_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: 1/K
    ! result unit: 1/K
    real, intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_real_unit_p00_p00_p00_m10
    m_real_unit_p00_p00_p00_m10%v = left * right%v
end function m_real_unit_p00_p00_p00_m10

elemental function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: 1/K
    ! result unit: K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10
    d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p00_p00_m10

elemental function d_real_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: 1/K
    ! result unit: K
    real, intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_real_unit_p00_p00_p00_m10
    d_real_unit_p00_p00_p00_m10%v = left / right%v
end function d_real_unit_p00_p00_p00_m10

elemental function m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3/kg
    ! result unit: m3/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00

elemental function m_real_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3/kg
    ! result unit: m3/kg
    real, intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_real_unit_p30_m10_p00_p00
    m_real_unit_p30_m10_p00_p00%v = left * right%v
end function m_real_unit_p30_m10_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3/kg
    ! result unit: kg/m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00
    d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p30_m10_p00_p00

elemental function d_real_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m3/kg
    ! result unit: kg/m3
    real, intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_real_unit_p30_m10_p00_p00
    d_real_unit_p30_m10_p00_p00%v = left / right%v
end function d_real_unit_p30_m10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: 1/s
    ! result unit: 1/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00

elemental function m_real_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: 1/s
    ! result unit: 1/s
    real, intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_real_unit_p00_p00_m10_p00
    m_real_unit_p00_p00_m10_p00%v = left * right%v
end function m_real_unit_p00_p00_m10_p00

elemental function d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: 1/s
    ! result unit: s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00
    d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p00_p00_m10_p00

elemental function d_real_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: 1/s
    ! result unit: s
    real, intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_real_unit_p00_p00_m10_p00
    d_real_unit_p00_p00_m10_p00%v = left / right%v
end function d_real_unit_p00_p00_m10_p00

elemental function m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m3
    ! result unit: 1/m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00

elemental function m_real_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m3
    ! result unit: 1/m3
    real, intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_real_unit_m30_p00_p00_p00
    m_real_unit_m30_p00_p00_p00%v = left * right%v
end function m_real_unit_m30_p00_p00_p00

elemental function d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m3
    ! result unit: m3
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00
    d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m30_p00_p00_p00

elemental function d_real_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1
    ! right unit: 1/m3
    ! result unit: m3
    real, intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_real_unit_m30_p00_p00_p00
    d_real_unit_m30_p00_p00_p00%v = left / right%v
end function d_real_unit_m30_p00_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m
    ! result unit: s2/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00

elemental function m_real_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m
    ! result unit: s2/m
    real, intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_real_unit_m10_p00_p20_p00
    m_real_unit_m10_p00_p20_p00%v = left * right%v
end function m_real_unit_m10_p00_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m
    ! result unit: m/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00
    d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m10_p00_p20_p00

elemental function d_real_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m
    ! result unit: m/s2
    real, intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_real_unit_m10_p00_p20_p00
    d_real_unit_m10_p00_p20_p00%v = left / right%v
end function d_real_unit_m10_p00_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s
    ! result unit: m2/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00
    m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_p00_m10_p00

elemental function m_real_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m2/s
    ! result unit: m2/s
    real, intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_real_unit_p20_p00_m10_p00
    m_real_unit_p20_p00_m10_p00%v = left * right%v
end function m_real_unit_p20_p00_m10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg
    ! result unit: m.kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00
    m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p10_p00_p00

elemental function m_real_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg
    ! result unit: m.kg
    real, intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_real_unit_p10_p10_p00_p00
    m_real_unit_p10_p10_p00_p00%v = left * right%v
end function m_real_unit_p10_p10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m/kg
    ! result unit: m/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00
    m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_m10_p00_p00

elemental function m_real_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: m/kg
    ! result unit: m/kg
    real, intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_real_unit_p10_m10_p00_p00
    m_real_unit_p10_m10_p00_p00%v = left * right%v
end function m_real_unit_p10_m10_p00_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s2
    ! result unit: m.kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00

elemental function m_real_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s2
    ! result unit: m.kg/s2
    real, intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_real_unit_p10_p10_m20_p00
    m_real_unit_p10_p10_m20_p00%v = left * right%v
end function m_real_unit_p10_p10_m20_p00

elemental function d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s2
    ! result unit: s2/m/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00
    d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_real_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s2
    ! result unit: s2/m/kg
    real, intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_real_unit_p10_p10_m20_p00
    d_real_unit_p10_p10_m20_p00%v = left / right%v
end function d_real_unit_p10_p10_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00
    m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p20_m10_p20_p00

elemental function m_real_unit_p20_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: m2.s2/kg
    ! result unit: m2.s2/kg
    real, intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_real_unit_p20_m10_p20_p00
    m_real_unit_p20_m10_p20_p00%v = left * right%v
end function m_real_unit_p20_m10_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s
    ! result unit: m.kg/s
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00
    m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p10_m10_p00

elemental function m_real_unit_p10_p10_m10_p00(left, right)
    ! left unit: 1
    ! right unit: m.kg/s
    ! result unit: m.kg/s
    real, intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_real_unit_p10_p10_m10_p00
    m_real_unit_p10_p10_m10_p00%v = left * right%v
end function m_real_unit_p10_p10_m10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: m.s/kg
    ! result unit: m.s/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00
    m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_m10_p10_p00

elemental function m_real_unit_p10_m10_p10_p00(left, right)
    ! left unit: 1
    ! right unit: m.s/kg
    ! result unit: m.s/kg
    real, intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_real_unit_p10_m10_p10_p00
    m_real_unit_p10_m10_p10_p00%v = left * right%v
end function m_real_unit_p10_m10_p10_p00

elemental function m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m3.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00
    m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_real_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m3.kg/s2
    ! result unit: m3.kg/s2
    real, intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_real_unit_p30_p10_m20_p00
    m_real_unit_p30_p10_m20_p00%v = left * right%v
end function m_real_unit_p30_p10_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m/kg
    ! result unit: s2/m/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00

elemental function m_real_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m/kg
    ! result unit: s2/m/kg
    real, intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_real_unit_m10_m10_p20_p00
    m_real_unit_m10_m10_p20_p00%v = left * right%v
end function m_real_unit_m10_m10_p20_p00

elemental function d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m/kg
    ! result unit: m.kg/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00
    d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_real_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1
    ! right unit: s2/m/kg
    ! result unit: m.kg/s2
    real, intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_real_unit_m10_m10_p20_p00
    d_real_unit_m10_m10_p20_p00%v = left / right%v
end function d_real_unit_m10_m10_p20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m3/s2
    ! result unit: m3/s2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00
    m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_p00_m20_p00

elemental function m_real_unit_p30_p00_m20_p00(left, right)
    ! left unit: 1
    ! right unit: m3/s2
    ! result unit: m3/s2
    real, intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_real_unit_p30_p00_m20_p00
    m_real_unit_p30_p00_m20_p00%v = left * right%v
end function m_real_unit_p30_p00_m20_p00

elemental function m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m3/s2/K
    ! result unit: m3/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10
    m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_p00_m20_m10

elemental function m_real_unit_p30_p00_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m3/s2/K
    ! result unit: m3/s2/K
    real, intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_real_unit_p30_p00_m20_m10
    m_real_unit_p30_p00_m20_m10%v = left * right%v
end function m_real_unit_p30_p00_m20_m10

elemental function m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m
    ! result unit: s2.K/m
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10
    m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_p00_p20_p10

elemental function m_real_unit_m10_p00_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m
    ! result unit: s2.K/m
    real, intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_real_unit_m10_p00_p20_p10
    m_real_unit_m10_p00_p20_p10%v = left * right%v
end function m_real_unit_m10_p00_p20_p10

elemental function m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10
    m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p30_p10_m20_m10

elemental function m_real_unit_p30_p10_m20_m10(left, right)
    ! left unit: 1
    ! right unit: m3.kg/s2/K
    ! result unit: m3.kg/s2/K
    real, intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_real_unit_p30_p10_m20_m10
    m_real_unit_p30_p10_m20_m10%v = left * right%v
end function m_real_unit_p30_p10_m20_m10

elemental function m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10
    m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m10_m10_p20_p10

elemental function m_real_unit_m10_m10_p20_p10(left, right)
    ! left unit: 1
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m/kg
    real, intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_real_unit_m10_m10_p20_p10
    m_real_unit_m10_m10_p20_p10%v = left * right%v
end function m_real_unit_m10_m10_p20_p10

elemental function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: m.K
    ! result unit: m.K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10
    m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_p10

elemental function m_real_unit_p10_p00_p00_p10(left, right)
    ! left unit: 1
    ! right unit: m.K
    ! result unit: m.K
    real, intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_real_unit_p10_p00_p00_p10
    m_real_unit_p10_p00_p00_p10%v = left * right%v
end function m_real_unit_p10_p00_p00_p10

elemental function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: m/K
    ! result unit: m/K
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10
    m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_p10_p00_p00_m10

elemental function m_real_unit_p10_p00_p00_m10(left, right)
    ! left unit: 1
    ! right unit: m/K
    ! result unit: m/K
    real, intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_real_unit_p10_p00_p00_m10
    m_real_unit_p10_p00_p00_m10%v = left * right%v
end function m_real_unit_p10_p00_p00_m10

elemental function m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m2
    ! result unit: kg/m2
    class(unit_p00_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00
    m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_real_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1
    ! right unit: kg/m2
    ! result unit: kg/m2
    real, intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_real_unit_m20_p10_p00_p00
    m_real_unit_m20_p10_p00_p00%v = left * right%v
end function m_real_unit_m20_p10_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_real(left, right)
    ! left unit: m
    ! right unit: 1
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p00_p00_p00_real
    m_unit_p10_p00_p00_p00_real%v = left%v * right
end function m_unit_p10_p00_p00_p00_real

elemental function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_real(left, right)
    ! left unit: m
    ! right unit: 1
    ! result unit: m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p00_p00_p00_real
    d_unit_p10_p00_p00_p00_real%v = left%v / right
end function d_unit_p10_p00_p00_p00_real

elemental function m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    ! result unit: m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m
    ! result unit: 1
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m
    ! right unit: m/s
    ! result unit: m2/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m
    ! right unit: m/s
    ! result unit: s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00
    d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m2
    ! result unit: m3
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m2
    ! result unit: 1/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m
    ! right unit: kg
    ! result unit: m.kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m
    ! right unit: kg
    ! result unit: m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00
    d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/kg
    ! result unit: m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/kg
    ! result unit: m.kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00
    d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_m10_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: kg/s2
    ! result unit: m.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: kg/s2
    ! result unit: m.s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00
    d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p10_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: kg/m/s2
    ! result unit: kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: kg/m/s2
    ! result unit: m2.s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00
    d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m
    ! right unit: kg/s
    ! result unit: m.kg/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m
    ! right unit: kg/s
    ! result unit: m.s/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00
    d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p10_m10_p00

elemental function m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: m2.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: m2.kg/s2
    ! result unit: s2/m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00
    d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p10_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m
    ! right unit: m2/s2
    ! result unit: m3/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m
    ! right unit: m2/s2
    ! result unit: s2/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00
    d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p00_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m
    ! right unit: m2/s2/K
    ! result unit: m3/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10

elemental function d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m
    ! right unit: m2/s2/K
    ! result unit: s2.K/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10
    d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p00_m20_m10

elemental function m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m
    ! right unit: m2.kg/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10

elemental function d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m
    ! right unit: m2.kg/s2/K
    ! result unit: s2.K/m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10
    d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p10_m20_m10

elemental function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m
    ! right unit: K
    ! result unit: m.K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10

elemental function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m
    ! right unit: K
    ! result unit: m/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10
    d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_p10

elemental function m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m
    ! right unit: kg/m3
    ! result unit: kg/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00
    m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m30_p10_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m
    ! right unit: s
    ! result unit: m/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00
    d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: m3
    ! result unit: 1/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m
    ! right unit: m/s2
    ! result unit: m2/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00
    m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/m
    ! result unit: 1
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/m
    ! result unit: m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m
    ! right unit: s/m
    ! result unit: s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m
    ! right unit: s/m
    ! result unit: m2/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00
    d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_p00_p10_p00

elemental function m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/m2
    ! result unit: 1/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/m2
    ! result unit: m3
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00
    d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/kg
    ! result unit: m.s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/kg
    ! result unit: m.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00
    d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_m10_p20_p00

elemental function m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: m.s2/kg
    ! result unit: m2.s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: m.s2/kg
    ! result unit: kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00
    d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_m10_p20_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m
    ! right unit: s/kg
    ! result unit: m.s/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m
    ! right unit: s/kg
    ! result unit: m.kg/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00
    d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_m10_p10_p00

elemental function m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m2/kg
    ! result unit: s2/m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m2/kg
    ! result unit: m3.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00
    d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m2
    ! result unit: s2/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m2
    ! result unit: m3/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00
    d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p00

elemental function m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m2
    ! result unit: s2.K/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10

elemental function d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m2
    ! result unit: m3/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10
    d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_p00_p20_p10

elemental function m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10

elemental function d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m2/kg
    ! result unit: m3.kg/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10
    d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_m10_p20_p10

elemental function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m
    ! right unit: 1/K
    ! result unit: m/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10

elemental function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m
    ! right unit: 1/K
    ! result unit: m.K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10
    d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p00_p00_p00_m10

elemental function d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m
    ! right unit: m3/kg
    ! result unit: kg/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00
    d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_m10_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m
    ! right unit: 1/s
    ! result unit: m/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00
    m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m
    ! right unit: 1/m3
    ! result unit: 1/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00
    m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m
    ! result unit: m2/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00
    d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m
    ! right unit: m2/s
    ! result unit: s/m
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00
    d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m
    ! right unit: m.kg
    ! result unit: 1/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00
    d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p10_p00_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m
    ! right unit: m/kg
    ! result unit: kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00
    d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: m.kg/s2
    ! result unit: m2.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: m.kg/s2
    ! result unit: s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00
    d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: m2.s2/kg
    ! result unit: kg/m/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00
    d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p20_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m
    ! right unit: m.kg/s
    ! result unit: s/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00
    d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m
    ! right unit: m.s/kg
    ! result unit: kg/s
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00
    d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_m10_p10_p00

elemental function d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m
    ! right unit: m3.kg/s2
    ! result unit: s2/m2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00
    d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m/kg
    ! result unit: s2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m
    ! right unit: s2/m/kg
    ! result unit: m2.kg/s2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00
    d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m
    ! right unit: m3/s2
    ! result unit: s2/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00
    d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: m
    ! right unit: m3/s2/K
    ! result unit: s2.K/m2
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10
    d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_p00_m20_m10

elemental function d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m
    ! result unit: m2/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10
    d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_p00_p20_p10

elemental function d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: m
    ! right unit: m3.kg/s2/K
    ! result unit: s2.K/m2/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10
    d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p30_p10_m20_m10

elemental function d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: m
    ! right unit: s2.K/m/kg
    ! result unit: m2.kg/s2/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10
    d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m10_m10_p20_p10

elemental function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: m
    ! right unit: m.K
    ! result unit: 1/K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10
    d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_p10

elemental function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m
    ! right unit: m/K
    ! result unit: K
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10
    d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_p10_p00_p00_m10

elemental function d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m
    ! right unit: kg/m2
    ! result unit: m3/kg
    class(unit_p10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00
    d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: 1
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p00_m10_p00_real(left, right)
    ! left unit: m/s
    ! right unit: 1
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p00_m10_p00_real
    m_unit_p10_p00_m10_p00_real%v = left%v * right
end function m_unit_p10_p00_m10_p00_real

elemental function d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: 1
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00
    d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p00_m10_p00_real(left, right)
    ! left unit: m/s
    ! right unit: 1
    ! result unit: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p00_m10_p00_real
    d_unit_p10_p00_m10_p00_real%v = left%v / right
end function d_unit_p10_p00_m10_p00_real

elemental function m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: m
    ! result unit: m2/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: m
    ! result unit: 1/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00
    d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    ! result unit: m2/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s
    ! result unit: 1
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00
    d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: kg
    ! result unit: m.kg/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00
    m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_p10_p00_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: 1/kg
    ! result unit: m.kg/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00
    d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m/s
    ! right unit: kg/s2
    ! result unit: m.s/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00
    d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_p10_m20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: kg/s
    ! result unit: m.kg/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: kg/s
    ! result unit: m/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00
    d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m/s
    ! right unit: m2/s2
    ! result unit: s/m
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00
    d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p20_p00_m20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s
    ! result unit: m
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s
    ! result unit: m/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00
    d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s
    ! right unit: m/s2
    ! result unit: s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00
    d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_p00_m20_p00

elemental function m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: 1/m
    ! result unit: 1/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00

elemental function d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: 1/m
    ! result unit: m2/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00
    d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s/m
    ! result unit: 1
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s/m
    ! result unit: m2/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00
    d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_m10_p00_p10_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m/s
    ! right unit: s2/kg
    ! result unit: m.s/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00
    m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_m10_p20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s/kg
    ! result unit: m/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: s/kg
    ! result unit: m.kg/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00
    d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_m10_p10_p00

elemental function m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m/s
    ! right unit: s2/m2
    ! result unit: s/m
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00
    m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_m20_p00_p20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: 1/s
    ! result unit: m/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: 1/s
    ! result unit: m
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00
    d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m/s
    ! right unit: s2/m
    ! result unit: s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00
    m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_m10_p00_p20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m2/s
    ! result unit: m3/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m2/s
    ! result unit: 1/m
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00
    d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/s
    ! right unit: m/kg
    ! result unit: kg/s
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00
    d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_m10_p00_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m/s
    ! right unit: m.kg/s2
    ! result unit: s/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00
    d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_p10_m20_p00

elemental function m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m.kg/s
    ! result unit: m2.kg/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m/s
    ! right unit: m.kg/s
    ! result unit: 1/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00
    d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m/s
    ! right unit: m.s/kg
    ! result unit: kg/s2
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00
    d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_p00_m10_p00_unit_p10_m10_p10_p00

elemental function m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m/s
    ! right unit: s2/m/kg
    ! result unit: s/kg
    class(unit_p10_p00_m10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00
    m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m10_p00_unit_m10_m10_p20_p00

elemental function m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p20_p00_p00_p00_real(left, right)
    ! left unit: m2
    ! right unit: 1
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p20_p00_p00_p00_real
    m_unit_p20_p00_p00_p00_real%v = left%v * right
end function m_unit_p20_p00_p00_p00_real

elemental function d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p20_p00_p00_p00_real(left, right)
    ! left unit: m2
    ! right unit: 1
    ! result unit: m2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p20_p00_p00_p00_real
    d_unit_p20_p00_p00_p00_real%v = left%v / right
end function d_unit_p20_p00_p00_p00_real

elemental function m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m
    ! result unit: m3
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m
    ! result unit: m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m2
    ! result unit: 1
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00
    d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: kg/s2
    ! result unit: m2.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: kg/s2
    ! result unit: m2.s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00
    d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p00_p10_m20_p00

elemental function m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: kg/m/s2
    ! result unit: m.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00
    m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m10_p10_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m2.kg/s2
    ! result unit: s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00
    d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m2
    ! right unit: s
    ! result unit: m2/s
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00
    d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p00_p00_p10_p00

elemental function d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m3
    ! result unit: 1/m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00
    d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m/s2
    ! result unit: m3/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00
    m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1/m
    ! result unit: m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1/m
    ! result unit: m3
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1/m2
    ! result unit: 1
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00
    m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/kg
    ! result unit: m2.s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/kg
    ! result unit: m2.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00
    d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: m.s2/kg
    ! result unit: m.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00
    d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_m10_p20_p00

elemental function m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/m2/kg
    ! result unit: s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00
    m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m2
    ! right unit: 1/s
    ! result unit: m2/s
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00
    m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p00_p00_m10_p00

elemental function m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m2
    ! right unit: 1/m3
    ! result unit: 1/m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00
    m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/m
    ! result unit: m3/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00
    d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2
    ! right unit: m2/s
    ! result unit: s
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00
    d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p20_p00_m10_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m.kg
    ! result unit: m/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00
    d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m/kg
    ! result unit: m3/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2
    ! right unit: m/kg
    ! result unit: m.kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00
    d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m.kg/s2
    ! result unit: m3.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m.kg/s2
    ! result unit: m.s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00
    d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: m2.s2/kg
    ! result unit: kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00
    d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p20_m10_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m2
    ! right unit: m.kg/s
    ! result unit: m.s/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00
    d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p10_m10_p00

elemental function d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m2
    ! right unit: m.s/kg
    ! result unit: m.kg/s
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00
    d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_m10_p10_p00

elemental function d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m3.kg/s2
    ! result unit: s2/m/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00
    d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/m/kg
    ! result unit: m.s2/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2
    ! right unit: s2/m/kg
    ! result unit: m3.kg/s2
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00
    d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m2
    ! right unit: m3/s2
    ! result unit: s2/m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00
    d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: m2
    ! right unit: m3/s2/K
    ! result unit: s2.K/m
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10
    d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p30_p00_m20_m10

elemental function d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: m2
    ! right unit: s2.K/m
    ! result unit: m3/s2/K
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10
    d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_m10_p00_p20_p10

elemental function d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: m2
    ! right unit: m3.kg/s2/K
    ! result unit: s2.K/m/kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10
    d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p30_p10_m20_m10

elemental function d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: m2
    ! right unit: s2.K/m/kg
    ! result unit: m3.kg/s2/K
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10
    d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_m10_m10_p20_p10

elemental function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: m2
    ! right unit: m.K
    ! result unit: m/K
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10
    d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_p10

elemental function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m2
    ! right unit: m/K
    ! result unit: m.K
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10
    d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p20_p00_p00_p00_unit_p10_p00_p00_m10

elemental function m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m2
    ! right unit: kg/m2
    ! result unit: kg
    class(unit_p20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00
    m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_p10_p00_p00_real(left, right)
    ! left unit: kg
    ! right unit: 1
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p00_p10_p00_p00_real
    m_unit_p00_p10_p00_p00_real%v = left%v * right
end function m_unit_p00_p10_p00_p00_real

elemental function d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00
    d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_p10_p00_p00_real(left, right)
    ! left unit: kg
    ! right unit: 1
    ! result unit: kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p00_p10_p00_p00_real
    d_unit_p00_p10_p00_p00_real%v = left%v / right
end function d_unit_p00_p10_p00_p00_real

elemental function m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m
    ! result unit: m.kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00
    m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: kg
    ! right unit: m/s
    ! result unit: m.kg/s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00
    m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m2
    ! result unit: kg/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00
    d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p20_p00_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg
    ! result unit: 1
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00
    d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1/kg
    ! result unit: 1
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00
    m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg
    ! right unit: kg/s
    ! result unit: s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00
    d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p00_p10_m10_p00

elemental function d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: kg
    ! right unit: m2.kg/s2
    ! result unit: s2/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00
    d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p20_p10_m20_p00

elemental function m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: kg
    ! right unit: m2/s2
    ! result unit: m2.kg/s2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00
    m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p20_p00_m20_p00

elemental function m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: kg
    ! right unit: m2/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10
    m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p20_p00_m20_m10

elemental function d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: kg
    ! right unit: m2.kg/s2/K
    ! result unit: s2.K/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10
    d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p20_p10_m20_m10

elemental function d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg/m3
    ! result unit: m3
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00
    d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m30_p10_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: kg
    ! right unit: s
    ! result unit: kg/s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00
    d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m3
    ! result unit: kg/m3
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00
    d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: kg
    ! right unit: m/s2
    ! result unit: m.kg/s2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00
    m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p10_p00_m20_p00

elemental function d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1/m
    ! result unit: m.kg
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00
    d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: kg
    ! right unit: s/m
    ! result unit: m.kg/s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00
    d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m10_p00_p10_p00

elemental function m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1/m2
    ! result unit: kg/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00
    m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: kg
    ! right unit: s/kg
    ! result unit: s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00
    m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p00_m10_p10_p00

elemental function m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: kg
    ! right unit: s2/m2/kg
    ! result unit: s2/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00
    m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p00

elemental function d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: kg
    ! right unit: s2/m2
    ! result unit: m2.kg/s2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00
    d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p00

elemental function d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: kg
    ! right unit: s2.K/m2
    ! result unit: m2.kg/s2/K
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10
    d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m20_p00_p20_p10

elemental function m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: kg
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10
    m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m20_m10_p20_p10

elemental function m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m3/kg
    ! result unit: m3
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00
    m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p30_m10_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: kg
    ! right unit: 1/s
    ! result unit: kg/s
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00
    m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p00_p00_m10_p00

elemental function m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: kg
    ! right unit: 1/m3
    ! result unit: kg/m3
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00
    m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: kg
    ! right unit: s2/m
    ! result unit: m.kg/s2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00
    d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m10_p00_p20_p00

elemental function d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m.kg
    ! result unit: 1/m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00
    d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: m/kg
    ! result unit: m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00
    m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p10_m10_p00_p00

elemental function d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: kg
    ! right unit: m.kg/s2
    ! result unit: s2/m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00
    d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: kg
    ! right unit: m.kg/s
    ! result unit: s/m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00
    d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_p10_p10_m10_p00

elemental function m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: kg
    ! right unit: s2/m/kg
    ! result unit: s2/m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00
    m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p00

elemental function m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: kg
    ! right unit: m3/s2
    ! result unit: m3.kg/s2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00
    m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p30_p00_m20_p00

elemental function m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: kg
    ! right unit: m3/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10
    m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_p30_p00_m20_m10

elemental function m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: kg
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10
    m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p10_p00_p00_unit_m10_m10_p20_p10

elemental function d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg
    ! right unit: kg/m2
    ! result unit: m2
    class(unit_p00_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00
    d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_m10_p00_p00_real(left, right)
    ! left unit: 1/kg
    ! right unit: 1
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p00_m10_p00_p00_real
    m_unit_p00_m10_p00_p00_real%v = left%v * right
end function m_unit_p00_m10_p00_p00_real

elemental function d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00
    d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_m10_p00_p00_real(left, right)
    ! left unit: 1/kg
    ! right unit: 1
    ! result unit: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p00_m10_p00_p00_real
    d_unit_p00_m10_p00_p00_real%v = left%v / right
end function d_unit_p00_m10_p00_p00_real

elemental function m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m
    ! result unit: m/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00
    m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: kg
    ! result unit: 1
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00
    m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/kg
    ! result unit: 1
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00
    d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p00_m10_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1/kg
    ! right unit: kg/s
    ! result unit: 1/s
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00
    m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m2.kg/s2
    ! result unit: m2/s2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00
    m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m2/s2
    ! result unit: s2/m2/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00
    d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p20_p00_m20_p00

elemental function d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1/kg
    ! right unit: m2/s2/K
    ! result unit: s2.K/m2/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10
    d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p20_p00_m20_m10

elemental function m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1/kg
    ! right unit: m2.kg/s2/K
    ! result unit: m2/s2/K
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10
    m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p20_p10_m20_m10

elemental function m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: kg/m3
    ! result unit: 1/m3
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00
    m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s
    ! result unit: s/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00
    m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p00_p00_p10_p00

elemental function m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m3
    ! result unit: m3/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00
    m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p30_p00_p00_p00

elemental function d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m/s2
    ! result unit: s2/m/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00
    d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p10_p00_m20_p00

elemental function d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/m
    ! result unit: m/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00
    d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s/kg
    ! result unit: 1/s
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00
    d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s2/m2/kg
    ! result unit: m2/s2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00
    d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s2/m2
    ! result unit: s2/m2/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00
    m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p00

elemental function m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1/kg
    ! right unit: s2.K/m2
    ! result unit: s2.K/m2/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10
    m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m20_p00_p20_p10

elemental function d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1/kg
    ! right unit: s2.K/m2/kg
    ! result unit: m2/s2/K
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10
    d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_m20_m10_p20_p10

elemental function d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m3/kg
    ! result unit: 1/m3
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00
    d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/s
    ! result unit: s/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00
    d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: 1/m3
    ! result unit: m3/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00
    d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s2/m
    ! result unit: s2/m/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00
    m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p00

elemental function m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m.kg
    ! result unit: m
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00
    m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p10_p10_p00_p00

elemental function d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m/kg
    ! result unit: 1/m
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00
    d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m.kg/s2
    ! result unit: m/s2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00
    m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p10_p10_m20_p00

elemental function m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m.kg/s
    ! result unit: m/s
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00
    m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p10_p10_m10_p00

elemental function m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: m3.kg/s2
    ! result unit: m3/s2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00
    m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p30_p10_m20_p00

elemental function d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1/kg
    ! right unit: s2/m/kg
    ! result unit: m/s2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00
    d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p00_p00_unit_m10_m10_p20_p00

elemental function m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: 1/kg
    ! right unit: s2.K/m
    ! result unit: s2.K/m/kg
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10
    m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m10_p00_p20_p10

elemental function m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: 1/kg
    ! right unit: m3.kg/s2/K
    ! result unit: m3/s2/K
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10
    m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_p30_p10_m20_m10

elemental function m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1/kg
    ! right unit: kg/m2
    ! result unit: 1/m2
    class(unit_p00_m10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00
    m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_p10_m20_p00_real(left, right)
    ! left unit: kg/s2
    ! right unit: 1
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p00_p10_m20_p00_real
    m_unit_p00_p10_m20_p00_real%v = left%v * right
end function m_unit_p00_p10_m20_p00_real

elemental function d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00
    d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_p10_m20_p00_real(left, right)
    ! left unit: kg/s2
    ! right unit: 1
    ! result unit: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p00_p10_m20_p00_real
    d_unit_p00_p10_m20_p00_real%v = left%v / right
end function d_unit_p00_p10_m20_p00_real

elemental function m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m
    ! result unit: m.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m
    ! result unit: kg/m/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00
    d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m2
    ! result unit: m2.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00
    m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s2
    ! result unit: 1
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00
    d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/m/s2
    ! result unit: m
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00
    d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m10_p10_m20_p00

elemental function d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/s
    ! result unit: 1/s
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00
    d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p00_p10_m10_p00

elemental function d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m2.kg/s2
    ! result unit: 1/m2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00
    d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m2/s2
    ! result unit: kg/m2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00
    d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/m3
    ! result unit: m3/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00
    d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m30_p10_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s
    ! result unit: kg/s
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00
    m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p00_p00_p10_p00

elemental function m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m3
    ! result unit: m3.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00
    m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p30_p00_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1/m
    ! result unit: kg/m/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1/m
    ! result unit: m.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00
    d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1/m2
    ! result unit: m2.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00
    d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s2/kg
    ! result unit: 1
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00
    m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m.s2/kg
    ! result unit: m
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00
    m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p10_m10_p20_p00

elemental function m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s/kg
    ! result unit: 1/s
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00
    m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p00_m10_p10_p00

elemental function m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s2/m2/kg
    ! result unit: 1/m2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00
    m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s2/m2
    ! result unit: kg/m2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00
    m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m3/kg
    ! result unit: m3/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00
    m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p30_m10_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1/s
    ! result unit: kg/s
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00
    d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: 1/m3
    ! result unit: m3.kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00
    d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m30_p00_p00_p00

elemental function m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m/kg
    ! result unit: m/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00
    m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m.kg/s2
    ! result unit: 1/m
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00
    d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p10_p10_m20_p00

elemental function m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m2.s2/kg
    ! result unit: m2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00
    m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p20_m10_p20_p00

elemental function m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m.s/kg
    ! result unit: m/s
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00
    m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_p10_m10_p10_p00

elemental function d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m3.kg/s2
    ! result unit: 1/m3
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00
    d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p30_p10_m20_p00

elemental function m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: s2/m/kg
    ! result unit: 1/m
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00
    m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: kg/s2
    ! right unit: m3/s2
    ! result unit: kg/m3
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00
    d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_p30_p00_m20_p00

elemental function d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/s2
    ! right unit: kg/m2
    ! result unit: m2/s2
    class(unit_p00_p10_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00
    d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_m10_p10_m20_p00_real(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m10_p10_m20_p00_real
    m_unit_m10_p10_m20_p00_real%v = left%v * right
end function m_unit_m10_p10_m20_p00_real

elemental function d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00
    d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_m10_p10_m20_p00_real(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1
    ! result unit: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m10_p10_m20_p00_real
    d_unit_m10_p10_m20_p00_real%v = left%v / right
end function d_unit_m10_p10_m20_p00_real

elemental function m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m
    ! result unit: kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00
    m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p10_p00_p00_p00

elemental function m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m2
    ! result unit: m.kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00
    m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/s2
    ! result unit: 1/m
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00
    d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m/s2
    ! result unit: 1
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00
    d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m2.kg/s2
    ! result unit: 1/m3
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00
    d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m2/s2
    ! result unit: kg/m3
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00
    d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m3
    ! result unit: m2/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00
    d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m30_p10_p00_p00

elemental function m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m3
    ! result unit: m2.kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00
    m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p30_p00_p00_p00

elemental function d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m/s2
    ! result unit: kg/m2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00
    d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p10_p00_m20_p00

elemental function d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1/m
    ! result unit: kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00
    d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1/m2
    ! result unit: m.kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00
    d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: s2/kg
    ! result unit: 1/m
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00
    m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m.s2/kg
    ! result unit: 1
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00
    m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p10_m10_p20_p00

elemental function m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: s2/m2/kg
    ! result unit: 1/m3
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00
    m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: s2/m2
    ! result unit: kg/m3
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00
    m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m3/kg
    ! result unit: m2/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00
    m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p30_m10_p00_p00

elemental function d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: 1/m3
    ! result unit: m2.kg/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00
    d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m30_p00_p00_p00

elemental function m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: s2/m
    ! result unit: kg/m2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00
    m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_m10_p00_p20_p00

elemental function d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m.kg/s2
    ! result unit: 1/m2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00
    d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m2.s2/kg
    ! result unit: m
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00
    m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p20_m10_p20_p00

elemental function m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: m.s/kg
    ! result unit: 1/s
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00
    m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_p10_m10_p10_p00

elemental function m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: s2/m/kg
    ! result unit: 1/m2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00
    m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p10_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m/s2
    ! right unit: kg/m2
    ! result unit: m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00
    d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p10_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_p10_m10_p00_real(left, right)
    ! left unit: kg/s
    ! right unit: 1
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p10_m10_p00_real
    m_unit_p00_p10_m10_p00_real%v = left%v * right
end function m_unit_p00_p10_m10_p00_real

elemental function d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00
    d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_p10_m10_p00_real(left, right)
    ! left unit: kg/s
    ! right unit: 1
    ! result unit: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p10_m10_p00_real
    d_unit_p00_p10_m10_p00_real%v = left%v / right
end function d_unit_p00_p10_m10_p00_real

elemental function m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: m
    ! result unit: m.kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00
    m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: m/s
    ! result unit: m.kg/s2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00
    m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg
    ! result unit: 1/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00
    d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p10_p00_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1/kg
    ! result unit: 1/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00
    m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_m10_p00_p00

elemental function d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s2
    ! result unit: s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00
    d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p10_m20_p00

elemental function d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/s
    ! result unit: 1
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00
    d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: kg/s
    ! right unit: s
    ! result unit: kg
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: kg/s
    ! right unit: s
    ! result unit: kg/s2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00
    d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1/m
    ! result unit: m.kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00
    d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: kg/s
    ! right unit: s/m
    ! result unit: m.kg/s2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00
    d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_m10_p00_p10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: kg/s
    ! right unit: s2/kg
    ! result unit: s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00
    m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_m10_p20_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: kg/s
    ! right unit: s/kg
    ! result unit: 1
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00
    m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_m10_p10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1/s
    ! result unit: kg/s2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: 1/s
    ! result unit: kg
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00
    d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p00_p00_m10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: m2/s
    ! result unit: m2.kg/s2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: m2/s
    ! result unit: kg/m2
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00
    d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p20_p00_m10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: m/kg
    ! result unit: m/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00
    m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p10_m10_p00_p00

elemental function d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: kg/s
    ! right unit: m.kg/s2
    ! result unit: s/m
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00
    d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p10_p10_m20_p00

elemental function d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: kg/s
    ! right unit: m.kg/s
    ! result unit: 1/m
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00
    d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_p10_p10_m10_p00

elemental function m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: kg/s
    ! right unit: m.s/kg
    ! result unit: m
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00
    m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_p10_m10_p10_p00

elemental function m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: kg/s
    ! right unit: s2/m/kg
    ! result unit: s/m
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00
    m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p10_m10_p00_unit_m10_m10_p20_p00

elemental function d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/s
    ! right unit: kg/m2
    ! result unit: m2/s
    class(unit_p00_p10_m10_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00
    d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p10_m10_p00_unit_m20_p10_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p20_p10_m20_p00_real(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p10_m20_p00_real
    m_unit_p20_p10_m20_p00_real%v = left%v * right
end function m_unit_p20_p10_m20_p00_real

elemental function d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00
    d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_real(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p10_m20_p00_real
    d_unit_p20_p10_m20_p00_real%v = left%v / right
end function d_unit_p20_p10_m20_p00_real

elemental function m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m
    ! result unit: m3.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m
    ! result unit: m.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00
    d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m/s
    ! result unit: m.kg/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00
    d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p00_m10_p00

elemental function d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2
    ! result unit: kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00
    d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: kg
    ! result unit: m2/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00
    d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p00_p10_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/kg
    ! result unit: m2/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00
    m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: kg/s2
    ! result unit: m2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00
    d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: kg/m/s2
    ! result unit: m3
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00
    d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_m10_p10_m20_p00

elemental function d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: kg/s
    ! result unit: m2/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00
    d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p00_p10_m10_p00

elemental function d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2
    ! result unit: 1
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00
    d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2/s2
    ! result unit: kg
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00
    d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2.kg/s2/K
    ! result unit: K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10
    d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p20_p10_m20_m10

elemental function d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10
    d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p00_p00_p00_p10

elemental function d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m3
    ! result unit: kg/m/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00
    d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p30_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m/s2
    ! result unit: m.kg
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00
    d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/m
    ! result unit: m.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/m
    ! result unit: m3.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00
    d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s/m
    ! result unit: m.kg/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00
    m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m10_p00_p10_p00

elemental function m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/m2
    ! result unit: kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00
    m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2/kg
    ! result unit: m2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00
    m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m.s2/kg
    ! result unit: m3
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00
    m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p10_m10_p20_p00

elemental function m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s/kg
    ! result unit: m2/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00
    m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p00_m10_p10_p00

elemental function m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2/m2/kg
    ! result unit: 1
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00
    m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2/m2
    ! result unit: kg
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00
    m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2.K/m2/kg
    ! result unit: K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10
    m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m20_m10_p20_p10

elemental function m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/K
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10
    m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p00_p00_p00_m10

elemental function m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: 1/m3
    ! result unit: kg/m/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00
    m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m30_p00_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2/m
    ! result unit: m.kg
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00
    m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m10_p00_p20_p00

elemental function d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m2/s
    ! result unit: kg/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00
    d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p20_p00_m10_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m.kg
    ! result unit: m/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00
    d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p10_p00_p00

elemental function m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m/kg
    ! result unit: m3/s2
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00
    m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m.kg/s2
    ! result unit: m
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00
    d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p10_m20_p00

elemental function d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m.kg/s
    ! result unit: m/s
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00
    d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p10_p10_m10_p00

elemental function d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m3.kg/s2
    ! result unit: 1/m
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00
    d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_p00_unit_p30_p10_m20_p00

elemental function m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2/m/kg
    ! result unit: m
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00
    m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p00

elemental function m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: s2.K/m/kg
    ! result unit: m.K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10
    m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_m10_m10_p20_p10

elemental function m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m2.kg/s2
    ! right unit: m/K
    ! result unit: m3.kg/s2/K
    class(unit_p20_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10
    m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p20_p10_m20_p00_unit_p10_p00_p00_m10

elemental function m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p20_p00_m20_p00_real(left, right)
    ! left unit: m2/s2
    ! right unit: 1
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p20_p00_m20_p00_real
    m_unit_p20_p00_m20_p00_real%v = left%v * right
end function m_unit_p20_p00_m20_p00_real

elemental function d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00
    d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p20_p00_m20_p00_real(left, right)
    ! left unit: m2/s2
    ! right unit: 1
    ! result unit: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p20_p00_m20_p00_real
    d_unit_p20_p00_m20_p00_real%v = left%v / right
end function d_unit_p20_p00_m20_p00_real

elemental function m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m
    ! result unit: m3/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m
    ! result unit: m/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00
    d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m/s
    ! result unit: m/s
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00
    d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p10_p00_m10_p00

elemental function m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: kg
    ! result unit: m2.kg/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00
    m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p00_p10_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1/kg
    ! result unit: m2.kg/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00
    d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: kg/m/s2
    ! result unit: m3/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00
    d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_m10_p10_m20_p00

elemental function d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2.kg/s2
    ! result unit: 1/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00
    d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2
    ! result unit: 1
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00
    d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s2/K
    ! result unit: K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10
    d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p20_p00_m20_m10

elemental function d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m2/s2
    ! right unit: K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10
    d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p00_p00_p00_p10

elemental function m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: kg/m3
    ! result unit: kg/m/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00
    m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m30_p10_p00_p00

elemental function m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s
    ! result unit: m2/s
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00
    m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p00_p00_p10_p00

elemental function d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m/s2
    ! result unit: m
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00
    d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1/m
    ! result unit: m/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1/m
    ! result unit: m3/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00
    d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s/m
    ! result unit: m/s
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00
    m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m10_p00_p10_p00

elemental function m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m.s2/kg
    ! result unit: m3/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00
    m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p10_m10_p20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s2/m2/kg
    ! result unit: 1/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00
    m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s2/m2
    ! result unit: 1
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00
    m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m2/s2
    ! right unit: s2.K/m2
    ! result unit: K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10
    m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m20_p00_p20_p10

elemental function m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m2/s2
    ! right unit: 1/K
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10
    m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p00_p00_p00_m10

elemental function d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m3/kg
    ! result unit: kg/m/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00
    d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p30_m10_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m2/s2
    ! right unit: 1/s
    ! result unit: m2/s
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00
    d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p00_p00_m10_p00

elemental function m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s2/m
    ! result unit: m
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00
    m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p00

elemental function d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m2/s
    ! result unit: 1/s
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00
    d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p20_p00_m10_p00

elemental function m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m.kg
    ! result unit: m3.kg/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00
    m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p10_p10_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m/kg
    ! result unit: m.kg/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00
    d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m.kg/s2
    ! result unit: m/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00
    d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p10_p10_m20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: s2/m/kg
    ! result unit: m/kg
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00
    m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m2/s2
    ! right unit: m3/s2
    ! result unit: 1/m
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00
    d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_p00_unit_p30_p00_m20_p00

elemental function m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: m2/s2
    ! right unit: s2.K/m
    ! result unit: m.K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10
    m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m10_p00_p20_p10

elemental function m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m2/s2
    ! right unit: m/K
    ! result unit: m3/s2/K
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10
    m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_p10_p00_p00_m10

elemental function m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m2/s2
    ! right unit: kg/m2
    ! result unit: kg/s2
    class(unit_p20_p00_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00
    m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00

elemental function m_unit_p20_p00_m20_m10_real(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p20_p00_m20_m10_real
    m_unit_p20_p00_m20_m10_real%v = left%v * right
end function m_unit_p20_p00_m20_m10_real

elemental function d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00
    d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p00_p00_p00_p00

elemental function d_unit_p20_p00_m20_m10_real(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1
    ! result unit: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p20_p00_m20_m10_real
    d_unit_p20_p00_m20_m10_real%v = left%v / right
end function d_unit_p20_p00_m20_m10_real

elemental function m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: m
    ! result unit: m3/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00
    m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p00

elemental function m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: kg
    ! result unit: m2.kg/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00
    m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p00_p10_p00_p00

elemental function d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1/kg
    ! result unit: m2.kg/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00
    d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p00_m10_p00_p00

elemental function d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2
    ! result unit: 1/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00
    d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p20_p00_m20_p00

elemental function d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2/s2/K
    ! result unit: 1
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10
    d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p20_p00_m20_m10

elemental function d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: 1/kg
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10
    d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p20_p10_m20_m10

elemental function m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: K
    ! result unit: m2/s2
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10
    m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p00_p00_p00_p10

elemental function d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: m/s2
    ! result unit: m/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00
    d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p10_p00_m20_p00

elemental function d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1/m
    ! result unit: m3/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00
    d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_m10_p00_p00_p00

elemental function m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2/m2
    ! result unit: 1/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00
    m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p00

elemental function m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2.K/m2
    ! result unit: 1
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10
    m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m20_p00_p20_p10

elemental function m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2.K/m2/kg
    ! result unit: 1/kg
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10
    m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m20_m10_p20_p10

elemental function d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: 1/K
    ! result unit: m2/s2
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10
    d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p00_p00_p00_m10

elemental function m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2/m
    ! result unit: m/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00
    m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p00

elemental function m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00(left, right)
    ! left unit: m2/s2/K
    ! right unit: m.kg
    ! result unit: m3.kg/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00
    m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p10_p10_p00_p00

elemental function d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m3/s2/K
    ! result unit: 1/m
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10
    d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p30_p00_m20_m10

elemental function m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2.K/m
    ! result unit: m
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10
    m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m10_p00_p20_p10

elemental function m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: s2.K/m/kg
    ! result unit: m/kg
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10
    m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_m10_m10_p20_p10

elemental function m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m.K
    ! result unit: m3/s2
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10
    m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_p20_p00_m20_m10_unit_p10_p00_p00_p10

elemental function d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m2/s2/K
    ! right unit: m/K
    ! result unit: m/s2
    class(unit_p20_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10
    d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p20_p00_m20_m10_unit_p10_p00_p00_m10

elemental function m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00

elemental function m_unit_p20_p10_m20_m10_real(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p20_p10_m20_m10_real
    m_unit_p20_p10_m20_m10_real%v = left%v * right
end function m_unit_p20_p10_m20_m10_real

elemental function d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00
    d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p00_p00_p00_p00

elemental function d_unit_p20_p10_m20_m10_real(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1
    ! result unit: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p20_p10_m20_m10_real
    d_unit_p20_p10_m20_m10_real%v = left%v / right
end function d_unit_p20_p10_m20_m10_real

elemental function m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m
    ! result unit: m3.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00
    m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p00

elemental function d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: kg
    ! result unit: m2/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00
    d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p00_p10_p00_p00

elemental function m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1/kg
    ! result unit: m2/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00
    m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p00_m10_p00_p00

elemental function d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2
    ! result unit: 1/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00
    d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p20_p10_m20_p00

elemental function d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2/s2/K
    ! result unit: kg
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10
    d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p20_p00_m20_m10

elemental function d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: 1
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10
    d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p20_p10_m20_m10

elemental function m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: K
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10
    m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p00_p00_p00_p10

elemental function d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1/m
    ! result unit: m3.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00
    d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_m10_p00_p00_p00

elemental function m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2/m2/kg
    ! result unit: 1/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00
    m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p00

elemental function m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2.K/m2
    ! result unit: kg
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10
    m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m20_p00_p20_p10

elemental function m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2.K/m2/kg
    ! result unit: 1
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10
    m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m20_m10_p20_p10

elemental function d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: 1/K
    ! result unit: m2.kg/s2
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10
    d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p00_p00_p00_m10

elemental function m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m/kg
    ! result unit: m3/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00
    m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p10_m10_p00_p00

elemental function d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m.kg/s2
    ! result unit: m/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00
    d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p10_p10_m20_p00

elemental function m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2/m/kg
    ! result unit: m/K
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00
    m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p00

elemental function m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2.K/m
    ! result unit: m.kg
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10
    m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m10_p00_p20_p10

elemental function d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m3.kg/s2/K
    ! result unit: 1/m
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10
    d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p30_p10_m20_m10

elemental function m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: s2.K/m/kg
    ! result unit: m
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10
    m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_m10_m10_p20_p10

elemental function m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m.K
    ! result unit: m3.kg/s2
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10
    m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_p20_p10_m20_m10_unit_p10_p00_p00_p10

elemental function d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m2.kg/s2/K
    ! right unit: m/K
    ! result unit: m.kg/s2
    class(unit_p20_p10_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10
    d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p20_p10_m20_m10_unit_p10_p00_p00_m10

elemental function m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: K
    ! right unit: 1
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00

elemental function m_unit_p00_p00_p00_p10_real(left, right)
    ! left unit: K
    ! right unit: 1
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p00_p00_p00_p10_real
    m_unit_p00_p00_p00_p10_real%v = left%v * right
end function m_unit_p00_p00_p00_p10_real

elemental function d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: K
    ! right unit: 1
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00
    d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p00

elemental function d_unit_p00_p00_p00_p10_real(left, right)
    ! left unit: K
    ! right unit: 1
    ! result unit: K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p00_p00_p00_p10_real
    d_unit_p00_p00_p00_p10_real%v = left%v / right
end function d_unit_p00_p00_p00_p10_real

elemental function m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: K
    ! right unit: m
    ! result unit: m.K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00
    m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p10_p00_p00_p00

elemental function d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00(left, right)
    ! left unit: K
    ! right unit: m2.kg/s2
    ! result unit: s2.K/m2/kg
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00
    d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p20_p10_m20_p00

elemental function d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00(left, right)
    ! left unit: K
    ! right unit: m2/s2
    ! result unit: s2.K/m2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00
    d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p20_p00_m20_p00

elemental function m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: K
    ! right unit: m2/s2/K
    ! result unit: m2/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10
    m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p20_p00_m20_m10

elemental function m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: K
    ! right unit: m2.kg/s2/K
    ! result unit: m2.kg/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10
    m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p20_p10_m20_m10

elemental function d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: K
    ! result unit: 1
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10
    d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p00_p00_p00_p10

elemental function d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00(left, right)
    ! left unit: K
    ! right unit: m/s2
    ! result unit: s2.K/m
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00
    d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p10_p00_m20_p00

elemental function d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: K
    ! right unit: 1/m
    ! result unit: m.K
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00
    d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_m10_p00_p00_p00

elemental function m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00(left, right)
    ! left unit: K
    ! right unit: s2/m2/kg
    ! result unit: s2.K/m2/kg
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00
    m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_m20_m10_p20_p00

elemental function m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00(left, right)
    ! left unit: K
    ! right unit: s2/m2
    ! result unit: s2.K/m2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00
    m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_m20_p00_p20_p00

elemental function d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: K
    ! right unit: s2.K/m2
    ! result unit: m2/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10
    d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_m20_p00_p20_p10

elemental function d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: K
    ! right unit: s2.K/m2/kg
    ! result unit: m2.kg/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10
    d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_m20_m10_p20_p10

elemental function m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: K
    ! right unit: 1/K
    ! result unit: 1
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10
    m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p00_p00_p00_m10

elemental function m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00(left, right)
    ! left unit: K
    ! right unit: s2/m
    ! result unit: s2.K/m
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00
    m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_m10_p00_p20_p00

elemental function d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00(left, right)
    ! left unit: K
    ! right unit: m.kg/s2
    ! result unit: s2.K/m/kg
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00
    d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p10_p10_m20_p00

elemental function m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00(left, right)
    ! left unit: K
    ! right unit: s2/m/kg
    ! result unit: s2.K/m/kg
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00
    m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_m10_m10_p20_p00

elemental function m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10(left, right)
    ! left unit: K
    ! right unit: m3/s2/K
    ! result unit: m3/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10
    m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p30_p00_m20_m10

elemental function d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: K
    ! right unit: s2.K/m
    ! result unit: m/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10
    d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_m10_p00_p20_p10

elemental function m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10(left, right)
    ! left unit: K
    ! right unit: m3.kg/s2/K
    ! result unit: m3.kg/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10
    m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p30_p10_m20_m10

elemental function d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: K
    ! right unit: s2.K/m/kg
    ! result unit: m.kg/s2
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10
    d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_m10_m10_p20_p10

elemental function d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: K
    ! right unit: m.K
    ! result unit: 1/m
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10
    d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p00_p00_p00_p10_unit_p10_p00_p00_p10

elemental function m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10(left, right)
    ! left unit: K
    ! right unit: m/K
    ! result unit: m
    class(unit_p00_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10
    m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p00_p00_p00_p10_unit_p10_p00_p00_m10

elemental function m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: 1
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_m30_p10_p00_p00_real(left, right)
    ! left unit: kg/m3
    ! right unit: 1
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m30_p10_p00_p00_real
    m_unit_m30_p10_p00_p00_real%v = left%v * right
end function m_unit_m30_p10_p00_p00_real

elemental function d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: 1
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00
    d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_m30_p10_p00_p00_real(left, right)
    ! left unit: kg/m3
    ! right unit: 1
    ! result unit: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m30_p10_p00_p00_real
    d_unit_m30_p10_p00_p00_real%v = left%v / right
end function d_unit_m30_p10_p00_p00_real

elemental function m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m
    ! result unit: kg/m2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00
    m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg
    ! result unit: 1/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00
    d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: 1/kg
    ! result unit: 1/m3
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00
    m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m/s2
    ! result unit: s2/m2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00
    d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m2/s2
    ! result unit: kg/m/s2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00
    m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p20_p00_m20_p00

elemental function d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m3
    ! result unit: 1
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00
    d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m3
    ! result unit: kg
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00
    m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p30_p00_p00_p00

elemental function d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: 1/m
    ! result unit: kg/m2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00
    d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m.s2/kg
    ! result unit: s2/m2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00
    m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: s2/m2
    ! result unit: kg/m/s2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00
    d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m20_p00_p20_p00

elemental function m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m3/kg
    ! result unit: 1
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00
    m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: 1/m3
    ! result unit: kg
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00
    d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m/kg
    ! result unit: 1/m2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00
    m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m2.s2/kg
    ! result unit: s2/m
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00
    m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p20_m10_p20_p00

elemental function m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: kg/m3
    ! right unit: m3/s2
    ! result unit: kg/s2
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00
    m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m30_p10_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m3
    ! right unit: kg/m2
    ! result unit: 1/m
    class(unit_m30_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00
    d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m30_p10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s
    ! right unit: 1
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_p00_p10_p00_real(left, right)
    ! left unit: s
    ! right unit: 1
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_p00_p10_p00_real
    m_unit_p00_p00_p10_p00_real%v = left%v * right
end function m_unit_p00_p00_p10_p00_real

elemental function d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s
    ! right unit: 1
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00
    d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_p00_p10_p00_real(left, right)
    ! left unit: s
    ! right unit: 1
    ! result unit: s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_p00_p10_p00_real
    d_unit_p00_p00_p10_p00_real%v = left%v / right
end function d_unit_p00_p00_p10_p00_real

elemental function d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s
    ! right unit: m
    ! result unit: s/m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00
    d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s
    ! right unit: m/s
    ! result unit: m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s
    ! right unit: m/s
    ! result unit: s2/m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00
    d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s
    ! right unit: kg
    ! result unit: s/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00
    d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_p10_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s
    ! right unit: 1/kg
    ! result unit: s/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00
    m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_m10_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s
    ! right unit: kg/s2
    ! result unit: kg/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00
    m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_p10_m20_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s
    ! right unit: kg/s
    ! result unit: kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s
    ! right unit: kg/s
    ! result unit: s2/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00
    d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s
    ! right unit: m2/s2
    ! result unit: m2/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00
    m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p20_p00_m20_p00

elemental function d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s
    ! result unit: 1
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00
    d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_p00_p10_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s
    ! right unit: m/s2
    ! result unit: m/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00
    m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_p00_m20_p00

elemental function m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s
    ! right unit: 1/m
    ! result unit: s/m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00
    m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s/m
    ! result unit: s2/m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s
    ! right unit: s/m
    ! result unit: m
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00
    d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s
    ! right unit: s2/kg
    ! result unit: kg/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00
    d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_m10_p20_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s
    ! right unit: s/kg
    ! result unit: s2/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s
    ! right unit: s/kg
    ! result unit: kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00
    d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s
    ! right unit: s2/m2
    ! result unit: m2/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00
    d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_m20_p00_p20_p00

elemental function m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s
    ! right unit: 1/s
    ! result unit: 1
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00
    m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s
    ! right unit: s2/m
    ! result unit: m/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00
    d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_m10_p00_p20_p00

elemental function m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s
    ! right unit: m2/s
    ! result unit: m2
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s
    ! right unit: m2/s
    ! result unit: s2/m2
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00
    d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p20_p00_m10_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s
    ! right unit: m/kg
    ! result unit: m.s/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00
    m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_m10_p00_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s
    ! right unit: m.kg/s2
    ! result unit: m.kg/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00
    m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_p10_m20_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s
    ! right unit: m.kg/s
    ! result unit: m.kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s
    ! right unit: m.kg/s
    ! result unit: s2/m/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00
    d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_p10_p10_m10_p00

elemental function m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: s
    ! right unit: m.s/kg
    ! result unit: m.s2/kg
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00
    m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_p10_p00_unit_p10_m10_p10_p00

elemental function d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s
    ! right unit: s2/m/kg
    ! result unit: m.kg/s
    class(unit_p00_p00_p10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00
    d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p10_p00_unit_m10_m10_p20_p00

elemental function m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p30_p00_p00_p00_real(left, right)
    ! left unit: m3
    ! right unit: 1
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p30_p00_p00_p00_real
    m_unit_p30_p00_p00_p00_real%v = left%v * right
end function m_unit_p30_p00_p00_p00_real

elemental function d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p30_p00_p00_p00_real(left, right)
    ! left unit: m3
    ! right unit: 1
    ! result unit: m3
    class(unit_p30_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p30_p00_p00_p00_real
    d_unit_p30_p00_p00_p00_real%v = left%v / right
end function d_unit_p30_p00_p00_p00_real

elemental function d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m
    ! result unit: m2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m2
    ! result unit: m
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00
    d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p20_p00_p00_p00

elemental function d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3
    ! right unit: kg
    ! result unit: m3/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00
    d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1/kg
    ! result unit: m3/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00
    m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_p00_m10_p00_p00

elemental function m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m3
    ! right unit: kg/s2
    ! result unit: m3.kg/s2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00
    m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_p00_p10_m20_p00

elemental function m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m3
    ! right unit: kg/m/s2
    ! result unit: m2.kg/s2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00
    m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m10_p10_m20_p00

elemental function d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m3
    ! right unit: m2.kg/s2
    ! result unit: m.s2/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00
    d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p20_p10_m20_p00

elemental function m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m3
    ! right unit: kg/m3
    ! result unit: kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00
    m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m30_p10_p00_p00

elemental function d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3
    ! result unit: 1
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00
    d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1/m
    ! result unit: m2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1/m2
    ! result unit: m
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00
    m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m20_p00_p00_p00

elemental function d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m3
    ! right unit: s2/kg
    ! result unit: m3.kg/s2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00
    d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m3
    ! right unit: m.s2/kg
    ! result unit: m2.kg/s2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00
    d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p10_m10_p20_p00

elemental function m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m3
    ! right unit: s2/m2/kg
    ! result unit: m.s2/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00
    m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m20_m10_p20_p00

elemental function d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3
    ! right unit: m3/kg
    ! result unit: kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00
    d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p30_m10_p00_p00

elemental function m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m3
    ! right unit: 1/m3
    ! result unit: 1
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00
    m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m3
    ! right unit: m.kg/s2
    ! result unit: m2.s2/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00
    d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m3
    ! right unit: m2.s2/kg
    ! result unit: m.kg/s2
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00
    d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p20_m10_p20_p00

elemental function d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3
    ! right unit: m3.kg/s2
    ! result unit: s2/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00
    d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m3
    ! right unit: s2/m/kg
    ! result unit: m2.s2/kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00
    m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m10_m10_p20_p00

elemental function m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m3
    ! right unit: kg/m2
    ! result unit: m.kg
    class(unit_p30_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00
    m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p00_m20_p00_real(left, right)
    ! left unit: m/s2
    ! right unit: 1
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p10_p00_m20_p00_real
    m_unit_p10_p00_m20_p00_real%v = left%v * right
end function m_unit_p10_p00_m20_p00_real

elemental function d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00
    d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p00_m20_p00_real(left, right)
    ! left unit: m/s2
    ! right unit: 1
    ! result unit: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p10_p00_m20_p00_real
    d_unit_p10_p00_m20_p00_real%v = left%v / right
end function d_unit_p10_p00_m20_p00_real

elemental function m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: m
    ! result unit: m2/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00
    m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s
    ! result unit: 1/s
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00
    d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: m2
    ! result unit: m3/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00
    m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p20_p00_p00_p00

elemental function m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: kg
    ! result unit: m.kg/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00
    m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p00_p10_p00_p00

elemental function d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1/kg
    ! result unit: m.kg/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00
    d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: kg/s2
    ! result unit: m/kg
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00
    d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m2/s2
    ! result unit: 1/m
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00
    d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p20_p00_m20_p00

elemental function m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m/s2
    ! right unit: s
    ! result unit: m/s
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00
    m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/s2
    ! result unit: 1
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00
    d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p10_p00_m20_p00

elemental function d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1/m
    ! result unit: m2/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00
    d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m/s2
    ! right unit: s/m
    ! result unit: 1/s
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00
    m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1/m2
    ! result unit: m3/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00
    d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m/s2
    ! right unit: s2/kg
    ! result unit: m/kg
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00
    m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m/s2
    ! right unit: s2/m2
    ! result unit: 1/m
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00
    m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m20_p00_p20_p00

elemental function d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m/s2
    ! right unit: 1/s
    ! result unit: m/s
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00
    d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m/s2
    ! right unit: s2/m
    ! result unit: 1
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00
    m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p00

elemental function m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: m.kg
    ! result unit: m2.kg/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00
    m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p10_p10_p00_p00

elemental function d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: m/kg
    ! result unit: kg/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00
    d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m.kg/s2
    ! result unit: 1/kg
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00
    d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p10_p10_m20_p00

elemental function m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m2.s2/kg
    ! result unit: m3/kg
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00
    m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p20_m10_p20_p00

elemental function m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m/s2
    ! right unit: s2/m/kg
    ! result unit: 1/kg
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00
    m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m/s2
    ! right unit: m3/s2
    ! result unit: 1/m2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00
    d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_m20_p00_unit_p30_p00_m20_p00

elemental function m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: m/s2
    ! right unit: s2.K/m
    ! result unit: K
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10
    m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m10_p00_p20_p10

elemental function m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/s2
    ! right unit: m/K
    ! result unit: m2/s2/K
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10
    m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_p10_p00_p00_m10

elemental function m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m/s2
    ! right unit: kg/m2
    ! result unit: kg/m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00
    m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_m10_p00_p00_p00_real(left, right)
    ! left unit: 1/m
    ! right unit: 1
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m10_p00_p00_p00_real
    m_unit_m10_p00_p00_p00_real%v = left%v * right
end function m_unit_m10_p00_p00_p00_real

elemental function d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_real(left, right)
    ! left unit: 1/m
    ! right unit: 1
    ! result unit: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m10_p00_p00_p00_real
    d_unit_m10_p00_p00_p00_real%v = left%v / right
end function d_unit_m10_p00_p00_p00_real

elemental function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m
    ! result unit: 1
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m
    ! result unit: 1/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1/m
    ! right unit: m/s
    ! result unit: 1/s
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00
    m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p00_m10_p00

elemental function m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2
    ! result unit: m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2
    ! result unit: 1/m3
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: kg/s2
    ! result unit: kg/m/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: kg/s2
    ! result unit: s2/m/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00
    d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: kg/m/s2
    ! result unit: s2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00
    d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2.kg/s2
    ! result unit: m.kg/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00
    m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p20_p10_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2/s2
    ! result unit: m/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00
    m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p20_p00_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1/m
    ! right unit: s
    ! result unit: s/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00
    m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p00_p00_p10_p00

elemental function m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m3
    ! result unit: m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p30_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m/s2
    ! result unit: s2/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00
    d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    ! result unit: 1/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m
    ! result unit: 1
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1/m
    ! right unit: s/m
    ! result unit: 1/s
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00
    d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m10_p00_p10_p00

elemental function m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m2
    ! result unit: 1/m3
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m2
    ! result unit: m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/kg
    ! result unit: s2/m/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/kg
    ! result unit: kg/m/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00
    d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p00_m10_p20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.s2/kg
    ! result unit: s2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00
    m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/m2/kg
    ! result unit: m.kg/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00
    d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m20_m10_p20_p00

elemental function d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/m2
    ! result unit: m/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00
    d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m20_p00_p20_p00

elemental function d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/s
    ! result unit: s/m
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00
    d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p00_p00_m10_p00

elemental function d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: 1/m3
    ! result unit: m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00
    d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/m
    ! result unit: s2/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00
    m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2/s
    ! result unit: m/s
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00
    m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p20_p00_m10_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.kg
    ! result unit: kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00
    m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m/kg
    ! result unit: 1/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: m/kg
    ! result unit: kg/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00
    d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.kg/s2
    ! result unit: kg/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00

elemental function d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.kg/s2
    ! result unit: s2/m2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00
    d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_p10_p10_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m2.s2/kg
    ! result unit: m.s2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00
    m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p20_m10_p20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.kg/s
    ! result unit: kg/s
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00
    m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p10_m10_p00

elemental function m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: 1/m
    ! right unit: m.s/kg
    ! result unit: s/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00
    m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_m10_p10_p00

elemental function m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m3.kg/s2
    ! result unit: m2.kg/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00
    m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/m/kg
    ! result unit: s2/m2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1/m
    ! right unit: s2/m/kg
    ! result unit: kg/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00
    d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m10_m10_p20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: 1/m
    ! right unit: m3/s2
    ! result unit: m2/s2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00
    m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p30_p00_m20_p00

elemental function m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: 1/m
    ! right unit: m3/s2/K
    ! result unit: m2/s2/K
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10
    m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p30_p00_m20_m10

elemental function m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: 1/m
    ! right unit: s2.K/m
    ! result unit: s2.K/m2
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10
    m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m10_p00_p20_p10

elemental function m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: 1/m
    ! right unit: m3.kg/s2/K
    ! result unit: m2.kg/s2/K
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10
    m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p30_p10_m20_m10

elemental function m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: 1/m
    ! right unit: s2.K/m/kg
    ! result unit: s2.K/m2/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10
    m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m10_m10_p20_p10

elemental function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: 1/m
    ! right unit: m.K
    ! result unit: K
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10
    m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_p10

elemental function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: 1/m
    ! right unit: m/K
    ! result unit: 1/K
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10
    m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_p10_p00_p00_m10

elemental function m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: kg/m2
    ! result unit: kg/m3
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00

elemental function d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1/m
    ! right unit: kg/m2
    ! result unit: m/kg
    class(unit_m10_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00
    d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: 1
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00

elemental function m_unit_m10_p00_p10_p00_real(left, right)
    ! left unit: s/m
    ! right unit: 1
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m10_p00_p10_p00_real
    m_unit_m10_p00_p10_p00_real%v = left%v * right
end function m_unit_m10_p00_p10_p00_real

elemental function d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: 1
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00
    d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p00_p00_p00_p00

elemental function d_unit_m10_p00_p10_p00_real(left, right)
    ! left unit: s/m
    ! right unit: 1
    ! result unit: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m10_p00_p10_p00_real
    d_unit_m10_p00_p10_p00_real%v = left%v / right
end function d_unit_m10_p00_p10_p00_real

elemental function m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: m
    ! result unit: s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00
    m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_p00_p00_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: m/s
    ! result unit: 1
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: m/s
    ! result unit: s2/m2
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00
    d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p10_p00_m10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: kg/s
    ! result unit: s2/m/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00
    d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p00_p10_m10_p00

elemental function m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s/m
    ! right unit: m2.kg/s2
    ! result unit: m.kg/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00
    m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p20_p10_m20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s/m
    ! right unit: m2/s2
    ! result unit: m/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00
    m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p20_p00_m20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s
    ! result unit: s2/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s
    ! result unit: 1/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00
    d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p00_p00_p10_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s/m
    ! right unit: m/s2
    ! result unit: 1/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00
    m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_p00_m20_p00

elemental function d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: 1/m
    ! result unit: s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00
    d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m10_p00_p00_p00

elemental function m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    ! result unit: s2/m2
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/m
    ! result unit: 1
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00
    d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m10_p00_p10_p00

elemental function m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: s/kg
    ! result unit: s2/m/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00
    m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p00_m10_p10_p00

elemental function d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s/m
    ! right unit: s2/m2/kg
    ! result unit: m.kg/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00
    d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m20_m10_p20_p00

elemental function d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s/m
    ! right unit: s2/m2
    ! result unit: m/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00
    d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m20_p00_p20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: 1/s
    ! result unit: 1/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: 1/s
    ! result unit: s2/m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00
    d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s/m
    ! right unit: s2/m
    ! result unit: 1/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00
    d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m10_p00_p20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: m2/s
    ! result unit: m
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00
    m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p20_p00_m10_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: m/kg
    ! result unit: s/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00
    m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_m10_p00_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s/m
    ! right unit: m.kg/s2
    ! result unit: kg/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00
    m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_p10_m20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: m.kg/s
    ! result unit: kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s/m
    ! right unit: m.kg/s
    ! result unit: s2/m2/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00
    d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p10_p10_m10_p00

elemental function m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: m.s/kg
    ! result unit: s2/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00

elemental function d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: s/m
    ! right unit: m.s/kg
    ! result unit: kg/m2
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00
    d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_p10_m10_p10_p00

elemental function d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s/m
    ! right unit: s2/m/kg
    ! result unit: kg/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00
    d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m10_m10_p20_p00

elemental function m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: s/m
    ! right unit: m3/s2
    ! result unit: m2/s
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00
    m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p10_p00_unit_p30_p00_m20_p00

elemental function d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: s/m
    ! right unit: kg/m2
    ! result unit: m.s/kg
    class(unit_m10_p00_p10_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00
    d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p10_p00_unit_m20_p10_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_real(left, right)
    ! left unit: 1/m2
    ! right unit: 1
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m20_p00_p00_p00_real
    m_unit_m20_p00_p00_p00_real%v = left%v * right
end function m_unit_m20_p00_p00_p00_real

elemental function d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_m20_p00_p00_p00_real(left, right)
    ! left unit: 1/m2
    ! right unit: 1
    ! result unit: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m20_p00_p00_p00_real
    d_unit_m20_p00_p00_p00_real%v = left%v / right
end function d_unit_m20_p00_p00_p00_real

elemental function m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m
    ! result unit: 1/m
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m
    ! result unit: 1/m3
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00
    d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m2
    ! result unit: 1
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00
    m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: kg
    ! result unit: kg/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00
    m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/kg
    ! result unit: kg/m2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00
    d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: kg/s2
    ! result unit: s2/m2/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00
    d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: kg/m/s2
    ! result unit: s2/m/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00
    d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m2.kg/s2
    ! result unit: kg/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00
    m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: kg/m3
    ! result unit: m/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00
    d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m3
    ! result unit: m
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00
    m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m
    ! result unit: 1/m3
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m
    ! result unit: 1/m
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m2
    ! result unit: 1
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00
    d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: s2/kg
    ! result unit: s2/m2/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00
    m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p00_m10_p20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m.s2/kg
    ! result unit: s2/m/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00
    m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: s2/m2/kg
    ! result unit: kg/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00
    d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m3/kg
    ! result unit: m/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00
    m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: 1/m3
    ! result unit: m
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00
    d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m2/s
    ! result unit: 1/s
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00
    m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p20_p00_m10_p00

elemental function d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m/kg
    ! result unit: kg/m3
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00
    d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m.kg/s2
    ! result unit: kg/m/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00
    m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p10_p10_m20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m2.s2/kg
    ! result unit: s2/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00
    m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p20_m10_p20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m3.kg/s2
    ! result unit: m.kg/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00
    m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p30_p10_m20_p00

elemental function d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: s2/m/kg
    ! result unit: kg/m/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00
    d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m10_m10_p20_p00

elemental function m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: 1/m2
    ! right unit: m3/s2
    ! result unit: m/s2
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00
    m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: 1/m2
    ! right unit: kg/m2
    ! result unit: 1/kg
    class(unit_m20_p00_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00
    d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_m10_p20_p00_real(left, right)
    ! left unit: s2/kg
    ! right unit: 1
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p00_m10_p20_p00_real
    m_unit_p00_m10_p20_p00_real%v = left%v * right
end function m_unit_p00_m10_p20_p00_real

elemental function d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00
    d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_real(left, right)
    ! left unit: s2/kg
    ! right unit: 1
    ! result unit: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p00_m10_p20_p00_real
    d_unit_p00_m10_p20_p00_real%v = left%v / right
end function d_unit_p00_m10_p20_p00_real

elemental function m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m
    ! result unit: m.s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m
    ! result unit: s2/m/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00
    d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m/s
    ! result unit: m.s/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00
    m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p10_p00_m10_p00

elemental function m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m2
    ! result unit: m2.s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m2
    ! result unit: s2/m2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00
    d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p20_p00_p00_p00

elemental function m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: kg/s2
    ! result unit: 1
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00
    m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: kg/m/s2
    ! result unit: 1/m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00
    m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: kg/s
    ! result unit: s
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00
    m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m2.kg/s2
    ! result unit: m2
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00
    m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s
    ! result unit: s/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00
    d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p00_p00_p10_p00

elemental function m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m/s2
    ! result unit: m/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00
    m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1/m
    ! result unit: s2/m/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1/m
    ! result unit: m.s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00
    d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s/m
    ! result unit: m.s/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00
    d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m10_p00_p10_p00

elemental function m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1/m2
    ! result unit: s2/m2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1/m2
    ! result unit: m2.s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00
    d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/kg
    ! result unit: 1
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00
    d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m.s2/kg
    ! result unit: 1/m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00
    d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s/kg
    ! result unit: s
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00
    d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/m2/kg
    ! result unit: m2
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00
    d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: 1/s
    ! result unit: s/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00
    m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/m
    ! result unit: m/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00
    d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m10_p00_p20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m/kg
    ! result unit: s2/m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00
    d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p10_m10_p00_p00

elemental function m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m.kg/s2
    ! result unit: m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00
    m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p10_p10_m20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m2.s2/kg
    ! result unit: 1/m2
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00
    d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p20_m10_p20_p00

elemental function d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m.s/kg
    ! result unit: s/m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00
    d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p10_m10_p10_p00

elemental function m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m3.kg/s2
    ! result unit: m3
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00
    m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p30_p10_m20_p00

elemental function d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: s2/m/kg
    ! result unit: m
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00
    d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p00

elemental function m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: s2/kg
    ! right unit: m3/s2
    ! result unit: m3/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00
    m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_p30_p00_m20_p00

elemental function d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2/kg
    ! right unit: s2.K/m/kg
    ! result unit: m/K
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10
    d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_m10_m10_p20_p10

elemental function d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2/kg
    ! right unit: m/K
    ! result unit: s2.K/m/kg
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10
    d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p00_m10_p20_p00_unit_p10_p00_p00_m10

elemental function m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: s2/kg
    ! right unit: kg/m2
    ! result unit: s2/m2
    class(unit_p00_m10_p20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00
    m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_m10_p20_p00_real(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p10_m10_p20_p00_real
    m_unit_p10_m10_p20_p00_real%v = left%v * right
end function m_unit_p10_m10_p20_p00_real

elemental function d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00
    d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_m10_p20_p00_real(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1
    ! result unit: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p10_m10_p20_p00_real
    d_unit_p10_m10_p20_p00_real%v = left%v / right
end function d_unit_p10_m10_p20_p00_real

elemental function m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m
    ! result unit: m2.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m
    ! result unit: s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00
    d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m2
    ! result unit: s2/m/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00
    d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p20_p00_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: kg/s2
    ! result unit: m
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00
    m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: kg/m/s2
    ! result unit: 1
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00
    m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m2.kg/s2
    ! result unit: m3
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00
    m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p20_p10_m20_p00

elemental function m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m2/s2
    ! result unit: m3/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00
    m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p20_p00_m20_p00

elemental function m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: kg/m3
    ! result unit: s2/m2
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00
    m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m30_p10_p00_p00

elemental function d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: s
    ! result unit: m.s/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00
    d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m3
    ! result unit: s2/m2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00
    d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p30_p00_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1/m
    ! result unit: s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1/m
    ! result unit: m2.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00
    d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1/m2
    ! result unit: s2/m/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00
    m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: s2/kg
    ! result unit: m
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00
    d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s2/kg
    ! result unit: 1
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00
    d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: s2/m2/kg
    ! result unit: m3
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00
    d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_m20_m10_p20_p00

elemental function d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: s2/m2
    ! result unit: m3/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00
    d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_m20_p00_p20_p00

elemental function d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m3/kg
    ! result unit: s2/m2
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00
    d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p30_m10_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1/s
    ! result unit: m.s/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00
    m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: 1/m3
    ! result unit: s2/m2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00
    m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m30_p00_p00_p00

elemental function m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.kg/s2
    ! result unit: m2
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00
    m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_p10_p10_m20_p00

elemental function d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m2.s2/kg
    ! result unit: 1/m
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00
    d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p20_m10_p20_p00

elemental function d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: m.s/kg
    ! result unit: s
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00
    d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_p10_m10_p10_p00

elemental function d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: s2/m/kg
    ! result unit: m2
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00
    d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m.s2/kg
    ! right unit: kg/m2
    ! result unit: s2/m
    class(unit_p10_m10_p20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00
    m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_m10_p10_p00_real(left, right)
    ! left unit: s/kg
    ! right unit: 1
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_m10_p10_p00_real
    m_unit_p00_m10_p10_p00_real%v = left%v * right
end function m_unit_p00_m10_p10_p00_real

elemental function d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00
    d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_m10_p10_p00_real(left, right)
    ! left unit: s/kg
    ! right unit: 1
    ! result unit: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_m10_p10_p00_real
    d_unit_p00_m10_p10_p00_real%v = left%v / right
end function d_unit_p00_m10_p10_p00_real

elemental function m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: m
    ! result unit: m.s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00
    m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: m/s
    ! result unit: m/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: m/s
    ! result unit: s2/m/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00
    d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p10_p00_m10_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: kg
    ! result unit: s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00
    m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p10_p00_p00

elemental function d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1/kg
    ! result unit: s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00
    d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_m10_p00_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s/kg
    ! right unit: kg/s2
    ! result unit: 1/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00
    m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p10_m20_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: kg/s
    ! result unit: 1
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00
    m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s/kg
    ! right unit: m2.kg/s2
    ! result unit: m2/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00
    m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p20_p10_m20_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s
    ! result unit: s2/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s
    ! result unit: 1/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00
    d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1/m
    ! result unit: m.s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00
    d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/m
    ! result unit: s2/m/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/m
    ! result unit: m/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00
    d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s/kg
    ! right unit: s2/kg
    ! result unit: 1/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00
    d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_m10_p20_p00

elemental function d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: s/kg
    ! result unit: 1
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00
    d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s/kg
    ! right unit: s2/m2/kg
    ! result unit: m2/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00
    d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_m20_m10_p20_p00

elemental function m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1/s
    ! result unit: 1/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: 1/s
    ! result unit: s2/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00
    d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: m2/s
    ! result unit: s2/m2/kg
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00
    d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s/kg
    ! right unit: m/kg
    ! result unit: s/m
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00
    d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p10_m10_p00_p00

elemental function m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s/kg
    ! right unit: m.kg/s2
    ! result unit: m/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00
    m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p10_p10_m20_p00

elemental function m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s/kg
    ! right unit: m.kg/s
    ! result unit: m
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00
    m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_m10_p10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: s/kg
    ! right unit: m.s/kg
    ! result unit: 1/m
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00
    d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_p10_m10_p10_p00

elemental function d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s/kg
    ! right unit: s2/m/kg
    ! result unit: m/s
    class(unit_p00_m10_p10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00
    d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_m10_p10_p00_unit_m10_m10_p20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_m20_m10_p20_p00_real(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m20_m10_p20_p00_real
    m_unit_m20_m10_p20_p00_real%v = left%v * right
end function m_unit_m20_m10_p20_p00_real

elemental function d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00
    d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_m20_m10_p20_p00_real(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m20_m10_p20_p00_real
    d_unit_m20_m10_p20_p00_real%v = left%v / right
end function d_unit_m20_m10_p20_p00_real

elemental function m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m
    ! result unit: s2/m/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00
    m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p00

elemental function m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m2
    ! result unit: s2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00
    m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p20_p00_p00_p00

elemental function m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: kg
    ! result unit: s2/m2
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00
    m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p00_p10_p00_p00

elemental function d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1/kg
    ! result unit: s2/m2
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00
    d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_p00_m10_p00_p00

elemental function m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: kg/s2
    ! result unit: 1/m2
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00
    m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: kg/m/s2
    ! result unit: 1/m3
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00
    m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m2.kg/s2
    ! result unit: 1
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00
    m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p20_p10_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m2/s2
    ! result unit: 1/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00
    m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p20_p00_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m2.kg/s2/K
    ! result unit: 1/K
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10
    m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p20_p10_m20_m10

elemental function m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: K
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10
    m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p00_p00_p00_p10

elemental function m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m3
    ! result unit: m.s2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00
    m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p30_p00_p00_p00

elemental function d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1/m
    ! result unit: s2/m/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00
    d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1/m2
    ! result unit: s2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00
    d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/kg
    ! result unit: 1/m2
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00
    d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m.s2/kg
    ! result unit: 1/m3
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00
    d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2/kg
    ! result unit: 1
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00
    d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p00

elemental function d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m2
    ! result unit: 1/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00
    d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m20_p00_p20_p00

elemental function d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2.K/m2/kg
    ! result unit: 1/K
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10
    d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m20_m10_p20_p10

elemental function d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1/K
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10
    d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_p00_p00_p00_m10

elemental function d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: 1/m3
    ! result unit: m.s2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00
    d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m30_p00_p00_p00

elemental function m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m2/s
    ! result unit: s/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00
    m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p20_p00_m10_p00

elemental function m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m.kg
    ! result unit: s2/m
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00
    m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p10_p10_p00_p00

elemental function m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m.kg/s2
    ! result unit: 1/m
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00
    m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p10_p10_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m.kg/s
    ! result unit: s/m
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00
    m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p10_p10_m10_p00

elemental function m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m3.kg/s2
    ! result unit: m
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00
    m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p30_p10_m20_p00

elemental function d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: s2/m/kg
    ! result unit: 1/m
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00
    d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p00_unit_m10_m10_p20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m3/s2
    ! result unit: m/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00
    m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p30_p00_m20_p00

elemental function m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m3.kg/s2/K
    ! result unit: m/K
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10
    m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p30_p10_m20_m10

elemental function m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: s2/m2/kg
    ! right unit: m.K
    ! result unit: s2.K/m/kg
    class(unit_m20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10
    m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_m20_m10_p20_p00_unit_p10_p00_p00_p10

elemental function m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: 1
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_m20_p00_p20_p00_real(left, right)
    ! left unit: s2/m2
    ! right unit: 1
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m20_p00_p20_p00_real
    m_unit_m20_p00_p20_p00_real%v = left%v * right
end function m_unit_m20_p00_p20_p00_real

elemental function d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: 1
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00
    d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_m20_p00_p20_p00_real(left, right)
    ! left unit: s2/m2
    ! right unit: 1
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m20_p00_p20_p00_real
    d_unit_m20_p00_p20_p00_real%v = left%v / right
end function d_unit_m20_p00_p20_p00_real

elemental function m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m
    ! result unit: s2/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00
    m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p00

elemental function m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m/s
    ! result unit: s/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00
    m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p10_p00_m10_p00

elemental function d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: kg
    ! result unit: s2/m2/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00
    d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_p00_p10_p00_p00

elemental function m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: 1/kg
    ! result unit: s2/m2/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00
    m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p00_m10_p00_p00

elemental function m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: kg/s2
    ! result unit: kg/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00
    m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: kg/m/s2
    ! result unit: kg/m3
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00
    m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m2.kg/s2
    ! result unit: kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00
    m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p20_p10_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m2/s2
    ! result unit: 1
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00
    m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p20_p00_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2/m2
    ! right unit: m2/s2/K
    ! result unit: 1/K
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10
    m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p20_p00_m20_m10

elemental function m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2/m2
    ! right unit: K
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10
    m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p00_p00_p00_p10

elemental function d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: kg/m3
    ! result unit: m.s2/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00
    d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m30_p10_p00_p00

elemental function m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m/s2
    ! result unit: 1/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00
    m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p10_p00_m20_p00

elemental function d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: 1/m
    ! result unit: s2/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00
    d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s/m
    ! result unit: s/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00
    d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m10_p00_p10_p00

elemental function d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/kg
    ! result unit: kg/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00
    d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m.s2/kg
    ! result unit: kg/m3
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00
    d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2/kg
    ! result unit: kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00
    d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m20_m10_p20_p00

elemental function d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m2
    ! result unit: 1
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00
    d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p00

elemental function d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2/m2
    ! right unit: s2.K/m2
    ! result unit: 1/K
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10
    d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m20_p00_p20_p10

elemental function d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2/m2
    ! right unit: 1/K
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10
    d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_p00_p00_p00_m10

elemental function m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m3/kg
    ! result unit: m.s2/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00
    m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p30_m10_p00_p00

elemental function d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: s2/m
    ! result unit: 1/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00
    d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m10_p00_p20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m2/s
    ! result unit: s
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00
    m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p20_p00_m10_p00

elemental function m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m/kg
    ! result unit: s2/m/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00
    m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p10_m10_p00_p00

elemental function m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m3.kg/s2
    ! result unit: m.kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00
    m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p30_p10_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: s2/m2
    ! right unit: m3/s2
    ! result unit: m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00
    m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p30_p00_m20_p00

elemental function m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: s2/m2
    ! right unit: m3/s2/K
    ! result unit: m/K
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10
    m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p30_p00_m20_m10

elemental function m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: s2/m2
    ! right unit: m.K
    ! result unit: s2.K/m
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10
    m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_m20_p00_p20_p00_unit_p10_p00_p00_p10

elemental function d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: s2/m2
    ! right unit: kg/m2
    ! result unit: s2/kg
    class(unit_m20_p00_p20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00
    d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p00_unit_m20_p10_p00_p00

elemental function m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00

elemental function m_unit_m20_p00_p20_p10_real(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m20_p00_p20_p10_real
    m_unit_m20_p00_p20_p10_real%v = left%v * right
end function m_unit_m20_p00_p20_p10_real

elemental function d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00
    d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p00

elemental function d_unit_m20_p00_p20_p10_real(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1
    ! result unit: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m20_p00_p20_p10_real
    d_unit_m20_p00_p20_p10_real%v = left%v / right
end function d_unit_m20_p00_p20_p10_real

elemental function m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: m
    ! result unit: s2.K/m
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00
    m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p10_p00_p00_p00

elemental function d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00
    d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_p00_p10_p00_p00

elemental function m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1/kg
    ! result unit: s2.K/m2/kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00
    m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p00_m10_p00_p00

elemental function m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: m2/s2
    ! result unit: K
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00
    m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p20_p00_m20_p00

elemental function m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: m2/s2/K
    ! result unit: 1
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10
    m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p20_p00_m20_m10

elemental function m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: m2.kg/s2/K
    ! result unit: kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10
    m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p20_p10_m20_m10

elemental function d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: K
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10
    d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_p00_p00_p00_p10

elemental function d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1/m
    ! result unit: s2.K/m
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00
    d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_m10_p00_p00_p00

elemental function d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2/m2
    ! result unit: K
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00
    d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p00

elemental function d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2
    ! result unit: 1
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10
    d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_m20_p00_p20_p10

elemental function d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m2/kg
    ! result unit: kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10
    d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_m20_m10_p20_p10

elemental function m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: 1/K
    ! result unit: s2/m2
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10
    m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p00_p00_p00_m10

elemental function m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: m/kg
    ! result unit: s2.K/m/kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00
    m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p10_m10_p00_p00

elemental function m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00(left, right)
    ! left unit: s2.K/m2
    ! right unit: m3/s2
    ! result unit: m.K
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00
    m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p30_p00_m20_p00

elemental function m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: m3/s2/K
    ! result unit: m
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10
    m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p30_p00_m20_m10

elemental function d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m2
    ! right unit: s2.K/m
    ! result unit: 1/m
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10
    d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_m20_p00_p20_p10_unit_m10_p00_p20_p10

elemental function m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: m3.kg/s2/K
    ! result unit: m.kg
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10
    m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p30_p10_m20_m10

elemental function m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2.K/m2
    ! right unit: m/K
    ! result unit: s2/m
    class(unit_m20_p00_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10
    m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_m20_p00_p20_p10_unit_p10_p00_p00_m10

elemental function m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00

elemental function m_unit_m20_m10_p20_p10_real(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m20_m10_p20_p10_real
    m_unit_m20_m10_p20_p10_real%v = left%v * right
end function m_unit_m20_m10_p20_p10_real

elemental function d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00
    d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p00

elemental function d_unit_m20_m10_p20_p10_real(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1
    ! result unit: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m20_m10_p20_p10_real
    d_unit_m20_m10_p20_p10_real%v = left%v / right
end function d_unit_m20_m10_p20_p10_real

elemental function m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m
    ! result unit: s2.K/m/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00
    m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p10_p00_p00_p00

elemental function m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: kg
    ! result unit: s2.K/m2
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00
    m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p00_p10_p00_p00

elemental function d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1/kg
    ! result unit: s2.K/m2
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00
    d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_p00_m10_p00_p00

elemental function m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m2.kg/s2
    ! result unit: K
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00
    m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p20_p10_m20_p00

elemental function m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m2/s2/K
    ! result unit: 1/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10
    m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p20_p00_m20_m10

elemental function m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m2.kg/s2/K
    ! result unit: 1
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10
    m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p20_p10_m20_m10

elemental function d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: K
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10
    d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_p00_p00_p00_p10

elemental function d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1/m
    ! result unit: s2.K/m/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00
    d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_m10_p00_p00_p00

elemental function d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2/m2/kg
    ! result unit: K
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00
    d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p00

elemental function d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2
    ! result unit: 1/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10
    d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_m20_p00_p20_p10

elemental function d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m2/kg
    ! result unit: 1
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10
    d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_m20_m10_p20_p10

elemental function m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: 1/K
    ! result unit: s2/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10
    m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p00_p00_p00_m10

elemental function m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m.kg
    ! result unit: s2.K/m
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00
    m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p10_p10_p00_p00

elemental function m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m3.kg/s2
    ! result unit: m.K
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00
    m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p30_p10_m20_p00

elemental function m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m3/s2/K
    ! result unit: m/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10
    m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p30_p00_m20_m10

elemental function m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m3.kg/s2/K
    ! result unit: m
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10
    m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p30_p10_m20_m10

elemental function d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: s2.K/m/kg
    ! result unit: 1/m
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10
    d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_m20_m10_p20_p10_unit_m10_m10_p20_p10

elemental function m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2.K/m2/kg
    ! right unit: m/K
    ! result unit: s2/m/kg
    class(unit_m20_m10_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10
    m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_m20_m10_p20_p10_unit_p10_p00_p00_m10

elemental function m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/K
    ! right unit: 1
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00

elemental function m_unit_p00_p00_p00_m10_real(left, right)
    ! left unit: 1/K
    ! right unit: 1
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p00_p00_p00_m10_real
    m_unit_p00_p00_p00_m10_real%v = left%v * right
end function m_unit_p00_p00_p00_m10_real

elemental function d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/K
    ! right unit: 1
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00
    d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_p00_p00_p00_p00

elemental function d_unit_p00_p00_p00_m10_real(left, right)
    ! left unit: 1/K
    ! right unit: 1
    ! result unit: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p00_p00_p00_m10_real
    d_unit_p00_p00_p00_m10_real%v = left%v / right
end function d_unit_p00_p00_p00_m10_real

elemental function m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/K
    ! right unit: m
    ! result unit: m/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00
    m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p00

elemental function m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1/K
    ! right unit: m2.kg/s2
    ! result unit: m2.kg/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00
    m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p20_p10_m20_p00

elemental function m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00(left, right)
    ! left unit: 1/K
    ! right unit: m2/s2
    ! result unit: m2/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00
    m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p20_p00_m20_p00

elemental function d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: 1/K
    ! right unit: m2/s2/K
    ! result unit: s2/m2
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10
    d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_p20_p00_m20_m10

elemental function d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: 1/K
    ! right unit: m2.kg/s2/K
    ! result unit: s2/m2/kg
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10
    d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_p20_p10_m20_m10

elemental function m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: 1/K
    ! right unit: K
    ! result unit: 1
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10
    m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p00_p00_p00_p10

elemental function d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/K
    ! right unit: 1/m
    ! result unit: m/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00
    d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_m10_p00_p00_p00

elemental function d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1/K
    ! right unit: s2/m2/kg
    ! result unit: m2.kg/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00
    d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_m20_m10_p20_p00

elemental function d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00(left, right)
    ! left unit: 1/K
    ! right unit: s2/m2
    ! result unit: m2/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00
    d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_m20_p00_p20_p00

elemental function m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: 1/K
    ! right unit: s2.K/m2
    ! result unit: s2/m2
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10
    m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_m20_p00_p20_p10

elemental function m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: 1/K
    ! right unit: s2.K/m2/kg
    ! result unit: s2/m2/kg
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10
    m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_m20_m10_p20_p10

elemental function d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: 1/K
    ! result unit: 1
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10
    d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_p00_p00_p00_m10

elemental function m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1/K
    ! right unit: m3.kg/s2
    ! result unit: m3.kg/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00
    m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p30_p10_m20_p00

elemental function m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00(left, right)
    ! left unit: 1/K
    ! right unit: m3/s2
    ! result unit: m3/s2/K
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00
    m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p30_p00_m20_p00

elemental function m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10(left, right)
    ! left unit: 1/K
    ! right unit: s2.K/m
    ! result unit: s2/m
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10
    m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_m10_p00_p20_p10

elemental function m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10(left, right)
    ! left unit: 1/K
    ! right unit: s2.K/m/kg
    ! result unit: s2/m/kg
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10
    m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_m10_m10_p20_p10

elemental function m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10(left, right)
    ! left unit: 1/K
    ! right unit: m.K
    ! result unit: m
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10
    m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_p00_p00_p00_m10_unit_p10_p00_p00_p10

elemental function d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: 1/K
    ! right unit: m/K
    ! result unit: 1/m
    class(unit_p00_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10
    d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p00_p00_p00_m10_unit_p10_p00_p00_m10

elemental function m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: 1
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p30_m10_p00_p00_real(left, right)
    ! left unit: m3/kg
    ! right unit: 1
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p30_m10_p00_p00_real
    m_unit_p30_m10_p00_p00_real%v = left%v * right
end function m_unit_p30_m10_p00_p00_real

elemental function d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: 1
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00
    d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p30_m10_p00_p00_real(left, right)
    ! left unit: m3/kg
    ! right unit: 1
    ! result unit: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p30_m10_p00_p00_real
    d_unit_p30_m10_p00_p00_real%v = left%v / right
end function d_unit_p30_m10_p00_p00_real

elemental function d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m2
    ! result unit: m/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00
    d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: kg
    ! result unit: m3
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00
    m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: 1/kg
    ! result unit: m3
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00
    d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p00_m10_p00_p00

elemental function m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: kg/s2
    ! result unit: m3/s2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00
    m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_p00_p10_m20_p00

elemental function m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: kg/m/s2
    ! result unit: m2/s2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00
    m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m10_p10_m20_p00

elemental function d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m2/s2
    ! result unit: m.s2/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00
    d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p20_p00_m20_p00

elemental function m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: kg/m3
    ! result unit: 1
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00
    m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m30_p10_p00_p00

elemental function d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3
    ! result unit: 1/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00
    d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p30_p00_p00_p00

elemental function d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m/s2
    ! result unit: m2.s2/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00
    d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: 1/m2
    ! result unit: m/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00
    m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m20_p00_p00_p00

elemental function d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: s2/kg
    ! result unit: m3/s2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00
    d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m.s2/kg
    ! result unit: m2/s2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00
    d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p10_m10_p20_p00

elemental function m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: s2/m2
    ! result unit: m.s2/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00
    m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m20_p00_p20_p00

elemental function d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/kg
    ! result unit: 1
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00
    d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p30_m10_p00_p00

elemental function m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: 1/m3
    ! result unit: 1/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00
    m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: s2/m
    ! result unit: m2.s2/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00
    m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m10_p00_p20_p00

elemental function d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m2/s
    ! result unit: m.s/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00
    d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p20_p00_m10_p00

elemental function d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m/kg
    ! result unit: m2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00
    d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p10_m10_p00_p00

elemental function d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m2.s2/kg
    ! result unit: m/s2
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00
    d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p20_m10_p20_p00

elemental function d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m.s/kg
    ! result unit: m2/s
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00
    d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p10_m10_p10_p00

elemental function d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/kg
    ! right unit: m3/s2
    ! result unit: s2/kg
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00
    d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_m10_p00_p00_unit_p30_p00_m20_p00

elemental function m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m3/kg
    ! right unit: kg/m2
    ! result unit: m
    class(unit_p30_m10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00
    m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_m10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p00_p00_m10_p00_real(left, right)
    ! left unit: 1/s
    ! right unit: 1
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p00_p00_m10_p00_real
    m_unit_p00_p00_m10_p00_real%v = left%v * right
end function m_unit_p00_p00_m10_p00_real

elemental function d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00
    d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p00_p00_m10_p00_real(left, right)
    ! left unit: 1/s
    ! right unit: 1
    ! result unit: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p00_p00_m10_p00_real
    d_unit_p00_p00_m10_p00_real%v = left%v / right
end function d_unit_p00_p00_m10_p00_real

elemental function m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: m
    ! result unit: m/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00
    m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m/s
    ! result unit: m/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m/s
    ! result unit: 1/m
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00
    d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p10_p00_m10_p00

elemental function m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: m2
    ! result unit: m2/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00
    m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p20_p00_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: kg
    ! result unit: kg/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00
    m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_p10_p00_p00

elemental function d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/kg
    ! result unit: kg/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00
    d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_m10_p00_p00

elemental function d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: 1/s
    ! right unit: kg/s2
    ! result unit: s/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00
    d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_p10_m20_p00

elemental function d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1/s
    ! right unit: kg/m/s2
    ! result unit: m.s/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00
    d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_m10_p10_m20_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: kg/s
    ! result unit: kg/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: kg/s
    ! result unit: 1/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00
    d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_p10_m10_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: s
    ! result unit: 1
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00
    m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: 1/s
    ! right unit: m/s2
    ! result unit: s/m
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00
    d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p10_p00_m20_p00

elemental function d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/m
    ! result unit: m/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00
    d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: s/m
    ! result unit: 1/m
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: s/m
    ! result unit: m/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00
    d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/m2
    ! result unit: m2/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00
    d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_m20_p00_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: 1/s
    ! right unit: s2/kg
    ! result unit: s/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00
    m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_m10_p20_p00

elemental function m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1/s
    ! right unit: m.s2/kg
    ! result unit: m.s/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00
    m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_m10_p20_p00

elemental function m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: s/kg
    ! result unit: 1/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: s/kg
    ! result unit: kg/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00
    d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_m10_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: 1/s
    ! result unit: 1
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00
    d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p00_p00_m10_p00

elemental function m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: 1/s
    ! right unit: s2/m
    ! result unit: s/m
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00
    m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_m10_p00_p20_p00

elemental function m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m2/s
    ! result unit: m2/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m2/s
    ! result unit: 1/m2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00
    d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p20_p00_m10_p00

elemental function m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1/s
    ! right unit: m.kg
    ! result unit: m.kg/s
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00
    m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_p10_p00_p00

elemental function m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m.kg/s
    ! result unit: m.kg/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00
    m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_p10_m10_p00

elemental function m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m.s/kg
    ! result unit: m/kg
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00

elemental function d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: 1/s
    ! right unit: m.s/kg
    ! result unit: kg/m/s2
    class(unit_p00_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00
    d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p00_p00_m10_p00_unit_p10_m10_p10_p00

elemental function m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_m30_p00_p00_p00_real(left, right)
    ! left unit: 1/m3
    ! right unit: 1
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m30_p00_p00_p00) :: m_unit_m30_p00_p00_p00_real
    m_unit_m30_p00_p00_p00_real%v = left%v * right
end function m_unit_m30_p00_p00_p00_real

elemental function d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00
    d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_m30_p00_p00_p00_real(left, right)
    ! left unit: 1/m3
    ! right unit: 1
    ! result unit: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m30_p00_p00_p00_real
    d_unit_m30_p00_p00_p00_real%v = left%v / right
end function d_unit_m30_p00_p00_p00_real

elemental function m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m
    ! result unit: 1/m2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00
    m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m2
    ! result unit: 1/m
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00
    m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: kg
    ! result unit: kg/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00
    m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/kg
    ! result unit: kg/m3
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00
    d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: kg/m/s2
    ! result unit: s2/m2/kg
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00
    d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m2.kg/s2
    ! result unit: kg/m/s2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00
    m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: kg/m3
    ! result unit: 1/kg
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00
    d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m3
    ! result unit: 1
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00
    m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p30_p00_p00_p00

elemental function d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m
    ! result unit: 1/m2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00
    d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m2
    ! result unit: 1/m
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00
    d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m.s2/kg
    ! result unit: s2/m2/kg
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00
    m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: s2/m2/kg
    ! result unit: kg/m/s2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00
    d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m3/kg
    ! result unit: 1/kg
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00
    m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: 1/m3
    ! result unit: 1
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00
    d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m30_p00_p00_p00_unit_m30_p00_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m.kg
    ! result unit: kg/m2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00
    m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m2.s2/kg
    ! result unit: s2/m/kg
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00
    m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p20_m10_p20_p00

elemental function m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: 1/m3
    ! right unit: m3.kg/s2
    ! result unit: kg/s2
    class(unit_m30_p00_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00
    m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m30_p00_p00_p00_unit_p30_p10_m20_p00

elemental function m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: 1
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_m10_p00_p20_p00_real(left, right)
    ! left unit: s2/m
    ! right unit: 1
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m10_p00_p20_p00_real
    m_unit_m10_p00_p20_p00_real%v = left%v * right
end function m_unit_m10_p00_p20_p00_real

elemental function d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: 1
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00
    d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_m10_p00_p20_p00_real(left, right)
    ! left unit: s2/m
    ! right unit: 1
    ! result unit: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m10_p00_p20_p00_real
    d_unit_m10_p00_p20_p00_real%v = left%v / right
end function d_unit_m10_p00_p20_p00_real

elemental function d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: m
    ! result unit: s2/m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00
    d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p10_p00_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s2/m
    ! right unit: m/s
    ! result unit: s
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00
    m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p10_p00_m10_p00

elemental function d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: kg
    ! result unit: s2/m/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00
    d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p00_p10_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: 1/kg
    ! result unit: s2/m/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00
    m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p00_m10_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: kg/m/s2
    ! result unit: kg/m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00
    m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m2.kg/s2
    ! result unit: m.kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00
    m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p20_p10_m20_p00

elemental function m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m2/s2
    ! result unit: m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00
    m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p20_p00_m20_p00

elemental function m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2/m
    ! right unit: m2/s2/K
    ! result unit: m/K
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10
    m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p20_p00_m20_m10

elemental function m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2/m
    ! right unit: K
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10
    m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p00_p00_p00_p10

elemental function d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: kg/m3
    ! result unit: m2.s2/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00
    d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m30_p10_p00_p00

elemental function d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: s2/m
    ! right unit: s
    ! result unit: s/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00
    d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p00_p00_p10_p00

elemental function m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m/s2
    ! result unit: 1
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00
    m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p10_p00_m20_p00

elemental function m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: 1/m
    ! result unit: s2/m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00
    m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s2/m
    ! right unit: s/m
    ! result unit: s
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00
    d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m10_p00_p10_p00

elemental function d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m.s2/kg
    ! result unit: kg/m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00
    d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m2/kg
    ! result unit: m.kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00
    d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m20_m10_p20_p00

elemental function d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m2
    ! result unit: m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00
    d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p00

elemental function d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2/m
    ! right unit: s2.K/m2
    ! result unit: m/K
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10
    d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m20_p00_p20_p10

elemental function d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2/m
    ! right unit: 1/K
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10
    d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p00_p00_p00_m10

elemental function m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: m3/kg
    ! result unit: m2.s2/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00
    m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p30_m10_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: s2/m
    ! right unit: 1/s
    ! result unit: s/m
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00
    m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p00_p00_m10_p00

elemental function d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m
    ! result unit: 1
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00
    d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p00

elemental function d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: m.kg
    ! result unit: s2/m2/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00
    d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p10_p10_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: m/kg
    ! result unit: s2/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00
    m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p10_m10_p00_p00

elemental function m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m.kg/s2
    ! result unit: kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00
    m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p10_p10_m20_p00

elemental function d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m2.s2/kg
    ! result unit: kg/m3
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00
    d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p20_m10_p20_p00

elemental function d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m
    ! right unit: s2/m/kg
    ! result unit: kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00
    d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m10_m10_p20_p00

elemental function m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: s2/m
    ! right unit: m3/s2
    ! result unit: m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00
    m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p00_unit_p30_p00_m20_p00

elemental function d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2/m
    ! right unit: s2.K/m
    ! result unit: 1/K
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10
    d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m10_p00_p20_p10

elemental function d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2/m
    ! right unit: m/K
    ! result unit: s2.K/m2
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10
    d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_p10_p00_p00_m10

elemental function d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: s2/m
    ! right unit: kg/m2
    ! result unit: m.s2/kg
    class(unit_m10_p00_p20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00
    d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p20_p00_m10_p00_real(left, right)
    ! left unit: m2/s
    ! right unit: 1
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p20_p00_m10_p00_real
    m_unit_p20_p00_m10_p00_real%v = left%v * right
end function m_unit_p20_p00_m10_p00_real

elemental function d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00
    d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p20_p00_m10_p00_real(left, right)
    ! left unit: m2/s
    ! right unit: 1
    ! result unit: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p20_p00_m10_p00_real
    d_unit_p20_p00_m10_p00_real%v = left%v / right
end function d_unit_p20_p00_m10_p00_real

elemental function d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: m
    ! result unit: m/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00
    d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m/s
    ! result unit: m3/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m/s
    ! result unit: m
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00
    d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2
    ! result unit: 1/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00
    d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p20_p00_p00_p00

elemental function m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: kg/s
    ! result unit: m2.kg/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00
    m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2.kg/s2
    ! result unit: s/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00
    d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p20_p10_m20_p00

elemental function d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s2
    ! result unit: s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00
    d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p20_p00_m20_p00

elemental function m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: s
    ! result unit: m2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: s
    ! result unit: m2/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00
    d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p00_p00_p10_p00

elemental function m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1/m
    ! result unit: m/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00
    m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: s/m
    ! result unit: m
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: s/m
    ! result unit: m3/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00
    d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_m10_p00_p10_p00

elemental function m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1/m2
    ! result unit: 1/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00
    m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m20_p00_p00_p00

elemental function d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: s/kg
    ! result unit: m2.kg/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00
    d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p00_m10_p10_p00

elemental function m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m2/s
    ! right unit: s2/m2/kg
    ! result unit: s/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00
    m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m20_m10_p20_p00

elemental function m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m2/s
    ! right unit: s2/m2
    ! result unit: s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00
    m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m20_p00_p20_p00

elemental function m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1/s
    ! result unit: m2/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: 1/s
    ! result unit: m2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00
    d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m2/s
    ! result unit: 1
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00
    d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: m/kg
    ! result unit: m.kg/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00
    d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_m10_p00_p00

elemental function d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2/s
    ! right unit: m.kg/s2
    ! result unit: m.s/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00
    d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_p10_m20_p00

elemental function m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m.kg/s
    ! result unit: m3.kg/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m.kg/s
    ! result unit: m/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00
    d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_p10_m10_p00

elemental function m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m.s/kg
    ! result unit: m3/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00

elemental function d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m2/s
    ! right unit: m.s/kg
    ! result unit: m.kg/s2
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00
    d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p10_m10_p10_p00

elemental function m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2/s
    ! right unit: s2/m/kg
    ! result unit: m.s/kg
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00
    m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m10_m10_p20_p00

elemental function d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m2/s
    ! right unit: m3/s2
    ! result unit: s/m
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00
    d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p20_p00_m10_p00_unit_p30_p00_m20_p00

elemental function m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m2/s
    ! right unit: kg/m2
    ! result unit: kg/s
    class(unit_p20_p00_m10_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00
    m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_p00_m10_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p10_p00_p00_real(left, right)
    ! left unit: m.kg
    ! right unit: 1
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p10_p10_p00_p00_real
    m_unit_p10_p10_p00_p00_real%v = left%v * right
end function m_unit_p10_p10_p00_p00_real

elemental function d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00
    d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p10_p00_p00_real(left, right)
    ! left unit: m.kg
    ! right unit: 1
    ! result unit: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p10_p10_p00_p00_real
    d_unit_p10_p10_p00_p00_real%v = left%v / right
end function d_unit_p10_p10_p00_p00_real

elemental function d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m
    ! result unit: kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00
    d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: kg
    ! result unit: m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00
    d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1/kg
    ! result unit: m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00
    m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m.kg
    ! right unit: m2.kg/s2
    ! result unit: s2/m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00
    d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p20_p10_m20_p00

elemental function m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m.kg
    ! right unit: m2/s2
    ! result unit: m3.kg/s2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00
    m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p20_p00_m20_p00

elemental function m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m.kg
    ! right unit: m2/s2/K
    ! result unit: m3.kg/s2/K
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10
    m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p20_p00_m20_m10

elemental function d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m.kg
    ! right unit: m2.kg/s2/K
    ! result unit: s2.K/m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10
    d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p20_p10_m20_m10

elemental function d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.kg
    ! right unit: s
    ! result unit: m.kg/s
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00
    d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m3
    ! result unit: kg/m2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00
    d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m.kg
    ! right unit: m/s2
    ! result unit: m2.kg/s2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00
    m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1/m
    ! result unit: kg
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00
    m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m.kg
    ! right unit: s2/m2/kg
    ! result unit: s2/m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00
    m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p00

elemental function d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m.kg
    ! right unit: s2/m2
    ! result unit: m3.kg/s2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00
    d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p00

elemental function d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m.kg
    ! right unit: s2.K/m2
    ! result unit: m3.kg/s2/K
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10
    d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_m20_p00_p20_p10

elemental function m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m.kg
    ! right unit: s2.K/m2/kg
    ! result unit: s2.K/m
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10
    m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_m20_m10_p20_p10

elemental function m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1/s
    ! result unit: m.kg/s
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00
    m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: 1/m3
    ! result unit: kg/m2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00
    m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m.kg
    ! right unit: s2/m
    ! result unit: m2.kg/s2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00
    d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p00

elemental function d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg
    ! result unit: 1
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00
    d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: m/kg
    ! result unit: m2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00
    m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_p00_p00_unit_p10_m10_p00_p00

elemental function d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg
    ! right unit: m.kg/s
    ! result unit: s
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00
    d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m.kg
    ! right unit: m3.kg/s2
    ! result unit: s2/m2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00
    d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p30_p10_m20_p00

elemental function d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10(left, right)
    ! left unit: m.kg
    ! right unit: s2.K/m
    ! result unit: m2.kg/s2/K
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10
    d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_m10_p00_p20_p10

elemental function d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: m.kg
    ! right unit: m3.kg/s2/K
    ! result unit: s2.K/m2
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10
    d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_p30_p10_m20_m10

elemental function d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m.kg
    ! right unit: kg/m2
    ! result unit: m3
    class(unit_p10_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00
    d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_m10_p00_p00_real(left, right)
    ! left unit: m/kg
    ! right unit: 1
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_m10_p00_p00_real
    m_unit_p10_m10_p00_p00_real%v = left%v * right
end function m_unit_p10_m10_p00_p00_real

elemental function d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00
    d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_m10_p00_p00_real(left, right)
    ! left unit: m/kg
    ! right unit: 1
    ! result unit: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_m10_p00_p00_real
    d_unit_p10_m10_p00_p00_real%v = left%v / right
end function d_unit_p10_m10_p00_p00_real

elemental function d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m
    ! result unit: 1/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00
    d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/s
    ! result unit: s/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00
    d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m2
    ! result unit: m3/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00
    m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p20_p00_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: kg
    ! result unit: m
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00
    m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p00_p10_p00_p00

elemental function d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1/kg
    ! result unit: m
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00
    d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p00_m10_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: kg/s2
    ! result unit: m/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00
    m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p00_p10_m20_p00

elemental function m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m/kg
    ! right unit: kg/s
    ! result unit: m/s
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00
    m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p00_p10_m10_p00

elemental function m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: m2.kg/s2
    ! result unit: m3/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00
    m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p20_p10_m20_p00

elemental function d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: m2/s2
    ! result unit: s2/m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00
    d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p20_p00_m20_p00

elemental function d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m/kg
    ! right unit: m2/s2/K
    ! result unit: s2.K/m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10
    d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p20_p00_m20_m10

elemental function m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m/kg
    ! right unit: m2.kg/s2/K
    ! result unit: m3/s2/K
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10
    m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p20_p10_m20_m10

elemental function m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: kg/m3
    ! result unit: 1/m2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00
    m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m/kg
    ! right unit: s
    ! result unit: m.s/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00
    m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/s2
    ! result unit: s2/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00
    d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1/m
    ! result unit: 1/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00
    m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m/kg
    ! right unit: s/m
    ! result unit: s/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00
    m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1/m2
    ! result unit: m3/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00
    d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_m20_p00_p00_p00

elemental function d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m/kg
    ! right unit: s2/kg
    ! result unit: m/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00
    d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p00_m10_p20_p00

elemental function d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m/kg
    ! right unit: s/kg
    ! result unit: m/s
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00
    d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p00_m10_p10_p00

elemental function d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m/kg
    ! right unit: s2/m2/kg
    ! result unit: m3/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00
    d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p00

elemental function m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m/kg
    ! right unit: s2/m2
    ! result unit: s2/m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00
    m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p00

elemental function m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m/kg
    ! right unit: s2.K/m2
    ! result unit: s2.K/m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10
    m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m20_p00_p20_p10

elemental function d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m/kg
    ! right unit: s2.K/m2/kg
    ! result unit: m3/s2/K
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10
    d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_m20_m10_p20_p10

elemental function d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m3/kg
    ! result unit: 1/m2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00
    d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m/kg
    ! right unit: 1/s
    ! result unit: m.s/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00
    d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m/kg
    ! right unit: s2/m
    ! result unit: s2/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00
    m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m10_p00_p20_p00

elemental function m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m.kg
    ! result unit: m2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00
    m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p10_p10_p00_p00

elemental function d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: m/kg
    ! result unit: 1
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00
    d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: m.kg/s2
    ! result unit: m2/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00
    m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p10_p10_m20_p00

elemental function m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m/kg
    ! right unit: m.kg/s
    ! result unit: m2/s
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00
    m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m/kg
    ! right unit: m.s/kg
    ! result unit: 1/s
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00
    d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p10_m10_p10_p00

elemental function d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m/kg
    ! right unit: s2/m/kg
    ! result unit: m2/s2
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00
    d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p00

elemental function d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m/kg
    ! right unit: m3/s2
    ! result unit: s2/m2/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00
    d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: m/kg
    ! right unit: m3/s2/K
    ! result unit: s2.K/m2/kg
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10
    d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_p30_p00_m20_m10

elemental function d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: m/kg
    ! right unit: s2.K/m/kg
    ! result unit: m2/s2/K
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10
    d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_m10_p00_p00_unit_m10_m10_p20_p10

elemental function m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m/kg
    ! right unit: kg/m2
    ! result unit: 1/m
    class(unit_p10_m10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00
    m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p00_p00_unit_m20_p10_p00_p00

elemental function m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p10_m20_p00_real(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p10_m20_p00_real
    m_unit_p10_p10_m20_p00_real%v = left%v * right
end function m_unit_p10_p10_m20_p00_real

elemental function d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00
    d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_real(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1
    ! result unit: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p10_m20_p00_real
    d_unit_p10_p10_m20_p00_real%v = left%v / right
end function d_unit_p10_p10_m20_p00_real

elemental function m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m
    ! result unit: m2.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m
    ! result unit: kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00
    d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m/s
    ! result unit: kg/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00
    d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m2
    ! result unit: m3.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m2
    ! result unit: kg/m/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00
    d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: kg
    ! result unit: m/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00
    d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p00_p10_p00_p00

elemental function m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/kg
    ! result unit: m/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00
    m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: kg/s2
    ! result unit: m
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00
    d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: kg/m/s2
    ! result unit: m2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00
    d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_m10_p10_m20_p00

elemental function d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: kg/s
    ! result unit: m/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00
    d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p00_p10_m10_p00

elemental function d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m2.kg/s2
    ! result unit: 1/m
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00
    d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p20_p10_m20_p00

elemental function m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s
    ! result unit: m.kg/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00
    m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m/s2
    ! result unit: kg
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00
    d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/m
    ! result unit: kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/m
    ! result unit: m2.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00
    d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s/m
    ! result unit: kg/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00
    m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m10_p00_p10_p00

elemental function m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/m2
    ! result unit: kg/m/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/m2
    ! result unit: m3.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00
    d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s2/kg
    ! result unit: m
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00
    m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.s2/kg
    ! result unit: m2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00
    m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p10_m10_p20_p00

elemental function m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s/kg
    ! result unit: m/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00
    m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p00_m10_p10_p00

elemental function m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s2/m2/kg
    ! result unit: 1/m
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00
    m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m20_m10_p20_p00

elemental function d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: 1/s
    ! result unit: m.kg/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00
    d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s2/m
    ! result unit: kg
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00
    m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m10_p00_p20_p00

elemental function m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m/kg
    ! result unit: m2/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00
    m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s2
    ! result unit: 1
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00
    d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p10_p10_m20_p00

elemental function m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m2.s2/kg
    ! result unit: m3
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00
    m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p20_m10_p20_p00

elemental function d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.kg/s
    ! result unit: 1/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00
    d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p10_p10_m10_p00

elemental function m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m.s/kg
    ! result unit: m2/s
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00
    m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p10_m10_p10_p00

elemental function d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m3.kg/s2
    ! result unit: 1/m2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00
    d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p30_p10_m20_p00

elemental function m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: s2/m/kg
    ! result unit: 1
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00
    m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: m3/s2
    ! result unit: kg/m2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00
    d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_p30_p00_m20_p00

elemental function m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: m.kg/s2
    ! right unit: s2.K/m/kg
    ! result unit: K
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10
    m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_m10_m10_p20_p10

elemental function m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: m.kg/s2
    ! right unit: m/K
    ! result unit: m2.kg/s2/K
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10
    m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p10_p10_m20_p00_unit_p10_p00_p00_m10

elemental function d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m.kg/s2
    ! right unit: kg/m2
    ! result unit: m3/s2
    class(unit_p10_p10_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00
    d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p20_m10_p20_p00_real(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_p20_m10_p20_p00_real
    m_unit_p20_m10_p20_p00_real%v = left%v * right
end function m_unit_p20_m10_p20_p00_real

elemental function d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00
    d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p20_m10_p20_p00_real(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1
    ! result unit: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_p20_m10_p20_p00_real
    d_unit_p20_m10_p20_p00_real%v = left%v / right
end function d_unit_p20_m10_p20_p00_real

elemental function d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m
    ! result unit: m.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00
    d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2
    ! result unit: s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00
    d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p20_p00_p00_p00

elemental function m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: kg/s2
    ! result unit: m2
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00
    m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: kg/m/s2
    ! result unit: m
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00
    m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: kg/m3
    ! result unit: s2/m
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00
    m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_m30_p10_p00_p00

elemental function d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m3
    ! result unit: s2/m/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00
    d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p30_p00_p00_p00

elemental function m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m/s2
    ! result unit: m3/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00
    m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1/m
    ! result unit: m.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00
    m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1/m2
    ! result unit: s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00
    m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: s2/kg
    ! result unit: m2
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00
    d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m.s2/kg
    ! result unit: m
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00
    d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m3/kg
    ! result unit: s2/m
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00
    d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p30_m10_p00_p00

elemental function m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: 1/m3
    ! result unit: s2/m/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00
    m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_m30_p00_p00_p00

elemental function d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: s2/m
    ! result unit: m3/kg
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00
    d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_m10_p00_p20_p00

elemental function m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m.kg/s2
    ! result unit: m3
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00
    m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p20_m10_p20_p00_unit_p10_p10_m20_p00

elemental function d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: m2.s2/kg
    ! result unit: 1
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00
    d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_p20_m10_p20_p00

elemental function d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m2.s2/kg
    ! right unit: s2/m/kg
    ! result unit: m3
    class(unit_p20_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00
    d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p20_m10_p20_p00_unit_m10_m10_p20_p00

elemental function m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_p10_m10_p00_real(left, right)
    ! left unit: m.kg/s
    ! right unit: 1
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_m10_p00) :: m_unit_p10_p10_m10_p00_real
    m_unit_p10_p10_m10_p00_real%v = left%v * right
end function m_unit_p10_p10_m10_p00_real

elemental function d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00
    d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_p10_m10_p00_real(left, right)
    ! left unit: m.kg/s
    ! right unit: 1
    ! result unit: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p10_p10_m10_p00_real
    d_unit_p10_p10_m10_p00_real%v = left%v / right
end function d_unit_p10_p10_m10_p00_real

elemental function d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m
    ! result unit: kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00
    d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p10_p00_p00_p00

elemental function m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m/s
    ! result unit: m2.kg/s2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m/s
    ! result unit: kg
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00
    d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p10_p00_m10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: kg
    ! result unit: m/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00
    d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p00_p10_p00_p00

elemental function m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1/kg
    ! result unit: m/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00
    m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p00_m10_p00_p00

elemental function d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: kg/s
    ! result unit: m
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00
    d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p00_p10_m10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m2.kg/s2
    ! result unit: s/m
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00
    d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p20_p10_m20_p00

elemental function m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s
    ! result unit: m.kg
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s
    ! result unit: m.kg/s2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00
    d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p00_p00_p10_p00

elemental function m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1/m
    ! result unit: kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00
    m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s/m
    ! result unit: kg
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s/m
    ! result unit: m2.kg/s2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00
    d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_m10_p00_p10_p00

elemental function m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s/kg
    ! result unit: m
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00
    m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p00_m10_p10_p00

elemental function m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s2/m2/kg
    ! result unit: s/m
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00
    m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_m20_m10_p20_p00

elemental function m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1/s
    ! result unit: m.kg/s2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: 1/s
    ! result unit: m.kg
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00
    d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m2/s
    ! result unit: m3.kg/s2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00
    m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg
    ! result unit: 1/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00
    d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p10_p10_p00_p00

elemental function m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m/kg
    ! result unit: m2/s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00
    m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p10_m10_p00_p00

elemental function d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s2
    ! result unit: s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00
    d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p10_p10_m20_p00

elemental function d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.kg/s
    ! result unit: 1
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00
    d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p10_p10_m10_p00_unit_p10_p10_m10_p00

elemental function m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: m.s/kg
    ! result unit: m2
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00
    m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_p10_m10_p10_p00

elemental function m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m.kg/s
    ! right unit: s2/m/kg
    ! result unit: s
    class(unit_p10_p10_m10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00
    m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p10_m10_p00_unit_m10_m10_p20_p00

elemental function m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: 1
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00

elemental function m_unit_p10_m10_p10_p00_real(left, right)
    ! left unit: m.s/kg
    ! right unit: 1
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_p10_m10_p10_p00_real
    m_unit_p10_m10_p10_p00_real%v = left%v * right
end function m_unit_p10_m10_p10_p00_real

elemental function d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: 1
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00
    d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p00_p00_p00_p00

elemental function d_unit_p10_m10_p10_p00_real(left, right)
    ! left unit: m.s/kg
    ! right unit: 1
    ! result unit: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_m10_p10_p00) :: d_unit_p10_m10_p10_p00_real
    d_unit_p10_m10_p10_p00_real%v = left%v / right
end function d_unit_p10_m10_p10_p00_real

elemental function d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m
    ! result unit: s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00
    d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p10_p00_p00_p00

elemental function d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m/s
    ! result unit: s2/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00
    d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p10_p00_m10_p00

elemental function m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: kg/s2
    ! result unit: m/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00
    m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p00_p10_m20_p00

elemental function m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: kg/m/s2
    ! result unit: 1/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00
    m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_m10_p10_m20_p00

elemental function m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: kg/s
    ! result unit: m
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00
    m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p00_p10_m10_p00

elemental function m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s
    ! result unit: m.s2/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s
    ! result unit: m/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_p10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00
    d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p00_p00_p10_p00

elemental function m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: 1/m
    ! result unit: s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00
    m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_m10_p00_p00_p00

elemental function m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s/m
    ! result unit: s2/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00
    m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_m10_p00_p10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s2/kg
    ! result unit: m/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00
    d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p00_m10_p20_p00

elemental function d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s2/kg
    ! result unit: 1/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_m10_p00) :: d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00
    d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p10_m10_p20_p00

elemental function d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s/kg
    ! result unit: m
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00
    d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p00_m10_p10_p00

elemental function m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: 1/s
    ! result unit: m/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: 1/s
    ! result unit: m.s2/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p00_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00
    d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p00_p00_m10_p00

elemental function m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m2/s
    ! result unit: m3/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m2/s
    ! result unit: s2/m/kg
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00
    d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p20_p00_m10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m/kg
    ! result unit: s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00
    d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p10_m10_p00_p00

elemental function m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.kg/s2
    ! result unit: m2/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00
    m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p10_p10_m20_p00

elemental function m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.kg/s
    ! result unit: m2
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00
    m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_p10_p10_m10_p00

elemental function d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: m.s/kg
    ! result unit: 1
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00
    d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_p10_m10_p10_p00

elemental function d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: s2/m/kg
    ! result unit: m2/s
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00
    d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_m10_p10_p00_unit_m10_m10_p20_p00

elemental function m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m.s/kg
    ! right unit: kg/m2
    ! result unit: s/m
    class(unit_p10_m10_p10_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00
    m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p10_m10_p10_p00_unit_m20_p10_p00_p00

elemental function m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p30_p10_m20_p00_real(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p30_p10_m20_p00_real
    m_unit_p30_p10_m20_p00_real%v = left%v * right
end function m_unit_p30_p10_m20_p00_real

elemental function d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00
    d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p30_p10_m20_p00_real(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p30_p10_m20_p00_real
    d_unit_p30_p10_m20_p00_real%v = left%v / right
end function d_unit_p30_p10_m20_p00_real

elemental function d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m
    ! result unit: m2.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00
    d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m2
    ! result unit: m.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00
    d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p20_p00_p00_p00

elemental function d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: kg
    ! result unit: m3/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00
    d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p00_p10_p00_p00

elemental function m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1/kg
    ! result unit: m3/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00
    m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: kg/s2
    ! result unit: m3
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00
    d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m2.kg/s2
    ! result unit: m
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00
    d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m2/s2
    ! result unit: m.kg
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00
    d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m2.kg/s2/K
    ! result unit: m.K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10
    d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p20_p10_m20_m10

elemental function d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10
    d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p00_p00_p00_p10

elemental function d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3
    ! result unit: kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00
    d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p30_p00_p00_p00

elemental function m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1/m
    ! result unit: m2.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00
    m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1/m2
    ! result unit: m.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00
    m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: s2/kg
    ! result unit: m3
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p30_p00_p00_p00) :: m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00
    m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: s2/m2/kg
    ! result unit: m
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00
    m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: s2/m2
    ! result unit: m.kg
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00
    m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: s2.K/m2/kg
    ! result unit: m.K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10
    m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m20_m10_p20_p10

elemental function m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1/K
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10
    m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_p00_p00_p00_m10

elemental function m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: 1/m3
    ! result unit: kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00
    m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m30_p00_p00_p00

elemental function d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m2/s
    ! result unit: m.kg/s
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_p10_m10_p00) :: d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00
    d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p20_p00_m10_p00

elemental function d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m.kg
    ! result unit: m2/s2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00
    d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p10_p10_p00_p00

elemental function d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m.kg/s2
    ! result unit: m2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00
    d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p10_p10_m20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m.kg/s
    ! result unit: m2/s
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00
    d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p10_p10_m10_p00

elemental function d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2
    ! result unit: 1
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00
    d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p30_p10_m20_p00

elemental function m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: s2/m/kg
    ! result unit: m2
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00
    m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_p00_unit_m10_m10_p20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3/s2
    ! result unit: kg
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00
    d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p30_p00_m20_p00

elemental function d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m3.kg/s2/K
    ! result unit: K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10
    d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p30_p10_m20_m10

elemental function d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: m3.kg/s2
    ! right unit: m.K
    ! result unit: m2.kg/s2/K
    class(unit_p30_p10_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10
    d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p30_p10_m20_p00_unit_p10_p00_p00_p10

elemental function m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00

elemental function m_unit_m10_m10_p20_p00_real(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_m10_p20_p00_real
    m_unit_m10_m10_p20_p00_real%v = left%v * right
end function m_unit_m10_m10_p20_p00_real

elemental function d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00
    d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p00_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_real(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_m10_p20_p00_real
    d_unit_m10_m10_p20_p00_real%v = left%v / right
end function d_unit_m10_m10_p20_p00_real

elemental function m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m
    ! result unit: s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m
    ! result unit: s2/m2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00
    d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p10_p00_p00_p00

elemental function m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m/s
    ! result unit: s/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00
    m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p10_p00_m10_p00

elemental function m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2
    ! result unit: m.s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00
    m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p20_p00_p00_p00

elemental function m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: kg
    ! result unit: s2/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00
    m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p00_p10_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/kg
    ! result unit: s2/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00
    d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p00_m10_p00_p00

elemental function m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: kg/s2
    ! result unit: 1/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00
    m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p00_p10_m20_p00

elemental function m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: kg/m/s2
    ! result unit: 1/m2
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00
    m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_m10_p10_m20_p00

elemental function m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: kg/s
    ! result unit: s/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p10_m10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00
    m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p00_p10_m10_p00

elemental function m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2.kg/s2
    ! result unit: m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00
    m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p20_p10_m20_p00

elemental function m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2/s2
    ! result unit: m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00
    m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p20_p00_m20_p00

elemental function m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2.kg/s2/K
    ! result unit: m/K
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10
    m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p20_p10_m20_m10

elemental function m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2/m/kg
    ! right unit: K
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10
    m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p00_p00_p00_p10

elemental function m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m3
    ! result unit: m2.s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00
    m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p30_p00_p00_p00

elemental function m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m/s2
    ! result unit: 1/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00
    m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p10_p00_m20_p00

elemental function m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/m
    ! result unit: s2/m2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/m
    ! result unit: s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00
    d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m10_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s/m
    ! result unit: s/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p00_m10_p10_p00) :: d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00
    d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m10_p00_p10_p00

elemental function d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/m2
    ! result unit: m.s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_m10_p20_p00) :: d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00
    d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m20_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/kg
    ! result unit: 1/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00
    d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p00_m10_p20_p00

elemental function d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m.s2/kg
    ! result unit: 1/m2
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00
    d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p10_m10_p20_p00

elemental function d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s/kg
    ! result unit: s/m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_m10_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00
    d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p00_m10_p10_p00

elemental function d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m2/kg
    ! result unit: m
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00
    d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p00

elemental function d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m2
    ! result unit: m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00
    d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m20_p00_p20_p00

elemental function d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2.K/m2/kg
    ! result unit: m/K
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10
    d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m20_m10_p20_p10

elemental function d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/K
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10
    d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p00_p00_p00_m10

elemental function d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: 1/m3
    ! result unit: m2.s2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p20_m10_p20_p00) :: d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00
    d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m30_p00_p00_p00

elemental function d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m
    ! result unit: 1/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00
    d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m10_p00_p20_p00

elemental function m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2/s
    ! result unit: m.s/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_m10_p10_p00) :: m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00
    m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p20_p00_m10_p00

elemental function d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m/kg
    ! result unit: s2/m2
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00
    d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p10_m10_p00_p00

elemental function m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m.kg/s2
    ! result unit: 1
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00
    m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p10_p10_m20_p00

elemental function d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m2.s2/kg
    ! result unit: 1/m3
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p20_m10_p20_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00
    d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p20_m10_p20_p00

elemental function m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m.kg/s
    ! result unit: s
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p10_m10_p00), intent(in) :: right
    type(unit_p00_p00_p10_p00) :: m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00
    m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p10_p10_m10_p00

elemental function m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: m3.kg/s2
    ! result unit: m2
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00
    m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p00_unit_p30_p10_m20_p00

elemental function d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2/m/kg
    ! result unit: 1
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00
    d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p00

elemental function d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2/m/kg
    ! right unit: s2.K/m/kg
    ! result unit: 1/K
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10
    d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_m10_m10_p20_p10

elemental function d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2/m/kg
    ! right unit: m/K
    ! result unit: s2.K/m2/kg
    class(unit_m10_m10_p20_p00), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10
    d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_m10_m10_p20_p00_unit_p10_p00_p00_m10

elemental function m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: 1
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00

elemental function m_unit_p30_p00_m20_p00_real(left, right)
    ! left unit: m3/s2
    ! right unit: 1
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p30_p00_m20_p00_real
    m_unit_p30_p00_m20_p00_real%v = left%v * right
end function m_unit_p30_p00_m20_p00_real

elemental function d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: 1
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00
    d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p00

elemental function d_unit_p30_p00_m20_p00_real(left, right)
    ! left unit: m3/s2
    ! right unit: 1
    ! result unit: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p30_p00_m20_p00_real
    d_unit_p30_p00_m20_p00_real%v = left%v / right
end function d_unit_p30_p00_m20_p00_real

elemental function d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m
    ! result unit: m2/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00
    d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p00

elemental function d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m/s
    ! result unit: m2/s
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00
    d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p10_p00_m10_p00

elemental function d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m2
    ! result unit: m/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00
    d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p20_p00_p00_p00

elemental function m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: kg
    ! result unit: m3.kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00
    m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_p00_p10_p00_p00

elemental function d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: 1/kg
    ! result unit: m3.kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00
    d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p00_m10_p00_p00

elemental function d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: kg/s2
    ! result unit: m3/kg
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00
    d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p00_p10_m20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m2.kg/s2
    ! result unit: m/kg
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00
    d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p20_p10_m20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m2/s2
    ! result unit: m
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00
    d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p20_p00_m20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10(left, right)
    ! left unit: m3/s2
    ! right unit: m2/s2/K
    ! result unit: m.K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10
    d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p20_p00_m20_m10

elemental function d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10(left, right)
    ! left unit: m3/s2
    ! right unit: K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10
    d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p00_p00_p00_p10

elemental function m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: kg/m3
    ! result unit: kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00
    m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m30_p10_p00_p00

elemental function d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m/s2
    ! result unit: m2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00
    d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p10_p00_m20_p00

elemental function m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: 1/m
    ! result unit: m2/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00
    m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m10_p00_p00_p00

elemental function m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00(left, right)
    ! left unit: m3/s2
    ! right unit: s/m
    ! result unit: m2/s
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p10_p00), intent(in) :: right
    type(unit_p20_p00_m10_p00) :: m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00
    m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m10_p00_p10_p00

elemental function m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: 1/m2
    ! result unit: m/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_m20_p00) :: m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00
    m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m20_p00_p00_p00

elemental function m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: s2/kg
    ! result unit: m3/kg
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_p30_m10_p00_p00) :: m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00
    m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_p00_m10_p20_p00

elemental function m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: s2/m2/kg
    ! result unit: m/kg
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00
    m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m20_m10_p20_p00

elemental function m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: s2/m2
    ! result unit: m
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00
    m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p00

elemental function m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10(left, right)
    ! left unit: m3/s2
    ! right unit: s2.K/m2
    ! result unit: m.K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10
    m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m20_p00_p20_p10

elemental function m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10(left, right)
    ! left unit: m3/s2
    ! right unit: 1/K
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10
    m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_p00_p00_p00_m10

elemental function d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/kg
    ! result unit: kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00
    d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p30_m10_p00_p00

elemental function m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: s2/m
    ! result unit: m2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00
    m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m10_p00_p20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m2/s
    ! result unit: m/s
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p10_p00_m10_p00) :: d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00
    d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p20_p00_m10_p00

elemental function d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m/kg
    ! result unit: m2.kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00
    d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p10_m10_p00_p00

elemental function d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3.kg/s2
    ! result unit: 1/kg
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00
    d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p30_p10_m20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2
    ! result unit: 1
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00
    d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p30_p00_m20_p00

elemental function d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2
    ! right unit: m3/s2/K
    ! result unit: K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10
    d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p30_p00_m20_m10

elemental function d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10(left, right)
    ! left unit: m3/s2
    ! right unit: m.K
    ! result unit: m2/s2/K
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10
    d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p30_p00_m20_p00_unit_p10_p00_p00_p10

elemental function m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: m3/s2
    ! right unit: kg/m2
    ! result unit: m.kg/s2
    class(unit_p30_p00_m20_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00
    m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_p00_unit_m20_p10_p00_p00

elemental function m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00

elemental function m_unit_p30_p00_m20_m10_real(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p30_p00_m20_m10_real
    m_unit_p30_p00_m20_m10_real%v = left%v * right
end function m_unit_p30_p00_m20_m10_real

elemental function d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00
    d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p00_p00_p00_p00

elemental function d_unit_p30_p00_m20_m10_real(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1
    ! result unit: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p30_p00_m20_m10_real
    d_unit_p30_p00_m20_m10_real%v = left%v / right
end function d_unit_p30_p00_m20_m10_real

elemental function d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: m
    ! result unit: m2/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00
    d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p10_p00_p00_p00

elemental function m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: kg
    ! result unit: m3.kg/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00
    m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_p00_p10_p00_p00

elemental function d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1/kg
    ! result unit: m3.kg/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00
    d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p00_m10_p00_p00

elemental function d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: m2/s2
    ! result unit: m/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00
    d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p20_p00_m20_p00

elemental function d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m2/s2/K
    ! result unit: m
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10
    d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p20_p00_m20_m10

elemental function d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: m/kg
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10
    d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p20_p10_m20_m10

elemental function m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m3/s2/K
    ! right unit: K
    ! result unit: m3/s2
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10
    m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_p00_p00_p00_p10

elemental function m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1/m
    ! result unit: m2/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00
    m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_m10_p00_p00_p00

elemental function m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: s2/m2
    ! result unit: m/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00
    m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p00

elemental function m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m3/s2/K
    ! right unit: s2.K/m2
    ! result unit: m
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10
    m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_m20_p00_p20_p10

elemental function m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m3/s2/K
    ! right unit: s2.K/m2/kg
    ! result unit: m/kg
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10
    m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_m20_m10_p20_p10

elemental function d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: 1/K
    ! result unit: m3/s2
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10
    d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p00_p00_p00_m10

elemental function d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: m/kg
    ! result unit: m2.kg/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00
    d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p10_m10_p00_p00

elemental function d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2
    ! result unit: 1/K
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00
    d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p30_p00_m20_p00

elemental function d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3/s2/K
    ! result unit: 1
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10
    d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p30_p00_m20_m10

elemental function m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10(left, right)
    ! left unit: m3/s2/K
    ! right unit: s2.K/m
    ! result unit: m2
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10
    m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10%v = left%v * right%v
end function m_unit_p30_p00_m20_m10_unit_m10_p00_p20_p10

elemental function d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m3.kg/s2/K
    ! result unit: 1/kg
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10
    d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p30_p10_m20_m10

elemental function d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m3/s2/K
    ! right unit: m/K
    ! result unit: m2/s2
    class(unit_p30_p00_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10
    d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p30_p00_m20_m10_unit_p10_p00_p00_m10

elemental function m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: 1
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00

elemental function m_unit_m10_p00_p20_p10_real(left, right)
    ! left unit: s2.K/m
    ! right unit: 1
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m10_p00_p20_p10_real
    m_unit_m10_p00_p20_p10_real%v = left%v * right
end function m_unit_m10_p00_p20_p10_real

elemental function d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: 1
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00
    d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p00

elemental function d_unit_m10_p00_p20_p10_real(left, right)
    ! left unit: s2.K/m
    ! right unit: 1
    ! result unit: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_m10_p00_p20_p10_real
    d_unit_m10_p00_p20_p10_real%v = left%v / right
end function d_unit_m10_p00_p20_p10_real

elemental function d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: m
    ! result unit: s2.K/m2
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00
    d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p00

elemental function d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: kg
    ! result unit: s2.K/m/kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00
    d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p00_p10_p00_p00

elemental function m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: 1/kg
    ! result unit: s2.K/m/kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00
    m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p00_m10_p00_p00

elemental function m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: m2/s2
    ! result unit: m.K
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00
    m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p20_p00_m20_p00

elemental function m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2.K/m
    ! right unit: m2/s2/K
    ! result unit: m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10
    m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p20_p00_m20_m10

elemental function m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2.K/m
    ! right unit: m2.kg/s2/K
    ! result unit: m.kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10
    m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p20_p10_m20_m10

elemental function d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: K
    ! result unit: s2/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10
    d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p00_p00_p00_p10

elemental function m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: m/s2
    ! result unit: K
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00
    m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p10_p00_m20_p00

elemental function m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: 1/m
    ! result unit: s2.K/m2
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00
    m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_m10_p00_p00_p00

elemental function d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: s2/m2
    ! result unit: m.K
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00
    d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p00

elemental function d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m2
    ! result unit: m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10
    d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m20_p00_p20_p10

elemental function d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m2/kg
    ! result unit: m.kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10
    d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m20_m10_p20_p10

elemental function m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2.K/m
    ! right unit: 1/K
    ! result unit: s2/m
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10
    m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p00_p00_p00_m10

elemental function d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: s2/m
    ! result unit: K
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00
    d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p00

elemental function d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00(left, right)
    ! left unit: s2.K/m
    ! right unit: m.kg
    ! result unit: s2.K/m2/kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00
    d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p10_p10_p00_p00

elemental function m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10(left, right)
    ! left unit: s2.K/m
    ! right unit: m3/s2/K
    ! result unit: m2
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10
    m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10%v = left%v * right%v
end function m_unit_m10_p00_p20_p10_unit_p30_p00_m20_m10

elemental function d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m
    ! result unit: 1
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10
    d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m10_p00_p20_p10

elemental function d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: s2.K/m/kg
    ! result unit: kg
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10
    d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_m10_m10_p20_p10

elemental function d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: s2.K/m
    ! right unit: m.K
    ! result unit: s2/m2
    class(unit_m10_p00_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10
    d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_m10_p00_p20_p10_unit_p10_p00_p00_p10

elemental function m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00

elemental function m_unit_p30_p10_m20_m10_real(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p30_p10_m20_m10_real
    m_unit_p30_p10_m20_m10_real%v = left%v * right
end function m_unit_p30_p10_m20_m10_real

elemental function d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00
    d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p00_p00_p00_p00

elemental function d_unit_p30_p10_m20_m10_real(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1
    ! result unit: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p30_p10_m20_m10_real
    d_unit_p30_p10_m20_m10_real%v = left%v / right
end function d_unit_p30_p10_m20_m10_real

elemental function d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m
    ! result unit: m2.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00
    d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p10_p00_p00_p00

elemental function d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: kg
    ! result unit: m3/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00
    d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p00_p10_p00_p00

elemental function m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1/kg
    ! result unit: m3/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00
    m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_p00_m10_p00_p00

elemental function d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m2.kg/s2
    ! result unit: m/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00
    d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p20_p10_m20_p00

elemental function d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m2/s2/K
    ! result unit: m.kg
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10
    d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p20_p00_m20_m10

elemental function d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m2.kg/s2/K
    ! result unit: m
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10
    d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p20_p10_m20_m10

elemental function m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: K
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10
    m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_p00_p00_p00_p10

elemental function m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1/m
    ! result unit: m2.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00
    m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_m10_p00_p00_p00

elemental function m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: s2/m2/kg
    ! result unit: m/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00
    m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p00

elemental function m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: s2.K/m2
    ! result unit: m.kg
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10
    m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_m20_p00_p20_p10

elemental function m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: s2.K/m2/kg
    ! result unit: m
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10
    m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_m20_m10_p20_p10

elemental function d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: 1/K
    ! result unit: m3.kg/s2
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10
    d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p00_p00_p00_m10

elemental function d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m.kg
    ! result unit: m2/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00
    d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p10_p10_p00_p00

elemental function d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2
    ! result unit: 1/K
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00
    d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p30_p10_m20_p00

elemental function d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3/s2/K
    ! result unit: kg
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10
    d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p30_p00_m20_m10

elemental function d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m3.kg/s2/K
    ! result unit: 1
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10
    d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p30_p10_m20_m10

elemental function m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: s2.K/m/kg
    ! result unit: m2
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10
    m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p30_p10_m20_m10_unit_m10_m10_p20_p10

elemental function d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m3.kg/s2/K
    ! right unit: m/K
    ! result unit: m2.kg/s2
    class(unit_p30_p10_m20_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10
    d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p30_p10_m20_m10_unit_p10_p00_p00_m10

elemental function m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00

elemental function m_unit_m10_m10_p20_p10_real(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_m10_m10_p20_p10_real
    m_unit_m10_m10_p20_p10_real%v = left%v * right
end function m_unit_m10_m10_p20_p10_real

elemental function d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00
    d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p00

elemental function d_unit_m10_m10_p20_p10_real(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1
    ! result unit: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_m10_m10_p20_p10_real
    d_unit_m10_m10_p20_p10_real%v = left%v / right
end function d_unit_m10_m10_p20_p10_real

elemental function d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m
    ! result unit: s2.K/m2/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00
    d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p00

elemental function m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: kg
    ! result unit: s2.K/m
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00
    m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p00_p10_p00_p00

elemental function d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1/kg
    ! result unit: s2.K/m
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00
    d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p00_m10_p00_p00

elemental function m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m2.kg/s2
    ! result unit: m.K
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00
    m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p20_p10_m20_p00

elemental function m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m2/s2/K
    ! result unit: m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10
    m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p20_p00_m20_m10

elemental function m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m2.kg/s2/K
    ! result unit: m
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10
    m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p20_p10_m20_m10

elemental function d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: K
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10
    d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p00_p00_p00_p10

elemental function m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1/m
    ! result unit: s2.K/m2/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00
    m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_m10_p00_p00_p00

elemental function d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2/m2/kg
    ! result unit: m.K
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00
    d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p00

elemental function d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m2
    ! result unit: m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p10_m10_p00_p00) :: d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10
    d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m20_p00_p20_p10

elemental function d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m2/kg
    ! result unit: m
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10
    d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m20_m10_p20_p10

elemental function m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: 1/K
    ! result unit: s2/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10
    m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p00_p00_p00_m10

elemental function d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m/kg
    ! result unit: s2.K/m2
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00
    d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p10_m10_p00_p00

elemental function m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m.kg/s2
    ! result unit: K
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00
    m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p10_p10_m20_p00

elemental function d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2/m/kg
    ! result unit: K
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00
    d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p00

elemental function d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m
    ! result unit: 1/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p00_m10_p00_p00) :: d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10
    d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m10_p00_p20_p10

elemental function m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m3.kg/s2/K
    ! result unit: m2
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10
    m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p30_p10_m20_m10

elemental function d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: s2.K/m/kg
    ! result unit: 1
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10
    d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_m10_m10_p20_p10

elemental function d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m.K
    ! result unit: s2/m2/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10
    d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_m10_m10_p20_p10_unit_p10_p00_p00_p10

elemental function m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10(left, right)
    ! left unit: s2.K/m/kg
    ! right unit: m/K
    ! result unit: s2/kg
    class(unit_m10_m10_p20_p10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10
    m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_m10_m10_p20_p10_unit_p10_p00_p00_m10

elemental function m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.K
    ! right unit: 1
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00

elemental function m_unit_p10_p00_p00_p10_real(left, right)
    ! left unit: m.K
    ! right unit: 1
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_p10) :: m_unit_p10_p00_p00_p10_real
    m_unit_p10_p00_p00_p10_real%v = left%v * right
end function m_unit_p10_p00_p00_p10_real

elemental function d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m.K
    ! right unit: 1
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00
    d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p00

elemental function d_unit_p10_p00_p00_p10_real(left, right)
    ! left unit: m.K
    ! right unit: 1
    ! result unit: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_p10) :: d_unit_p10_p00_p00_p10_real
    d_unit_p10_p00_p00_p10_real%v = left%v / right
end function d_unit_p10_p00_p00_p10_real

elemental function d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m.K
    ! right unit: m
    ! result unit: K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00
    d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p00

elemental function d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00(left, right)
    ! left unit: m.K
    ! right unit: m2.kg/s2
    ! result unit: s2.K/m/kg
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00
    d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p20_p10_m20_p00

elemental function d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00(left, right)
    ! left unit: m.K
    ! right unit: m2/s2
    ! result unit: s2.K/m
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00
    d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p20_p00_m20_p00

elemental function m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m.K
    ! right unit: m2/s2/K
    ! result unit: m3/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10
    m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_p20_p00_m20_m10

elemental function m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m.K
    ! right unit: m2.kg/s2/K
    ! result unit: m3.kg/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10
    m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_p20_p10_m20_m10

elemental function d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: K
    ! result unit: m
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10
    d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p00_p00_p00_p10

elemental function m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m.K
    ! right unit: 1/m
    ! result unit: K
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p10) :: m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00
    m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_m10_p00_p00_p00

elemental function m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00(left, right)
    ! left unit: m.K
    ! right unit: s2/m2/kg
    ! result unit: s2.K/m/kg
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_m10_m10_p20_p10) :: m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00
    m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_m20_m10_p20_p00

elemental function m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00(left, right)
    ! left unit: m.K
    ! right unit: s2/m2
    ! result unit: s2.K/m
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p10) :: m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00
    m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_m20_p00_p20_p00

elemental function d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m.K
    ! right unit: s2.K/m2
    ! result unit: m3/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_p30_p00_m20_p00) :: d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10
    d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_m20_p00_p20_p10

elemental function d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m.K
    ! right unit: s2.K/m2/kg
    ! result unit: m3.kg/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_p30_p10_m20_p00) :: d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10
    d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_m20_m10_p20_p10

elemental function m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m.K
    ! right unit: 1/K
    ! result unit: m
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10
    m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_p00_p00_p00_m10

elemental function d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00(left, right)
    ! left unit: m.K
    ! right unit: m3.kg/s2
    ! result unit: s2.K/m2/kg
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p30_p10_m20_p00), intent(in) :: right
    type(unit_m20_m10_p20_p10) :: d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00
    d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p30_p10_m20_p00

elemental function d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00(left, right)
    ! left unit: m.K
    ! right unit: m3/s2
    ! result unit: s2.K/m2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p10) :: d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00
    d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p30_p00_m20_p00

elemental function d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10(left, right)
    ! left unit: m.K
    ! right unit: s2.K/m
    ! result unit: m2/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m10_p00_p20_p10), intent(in) :: right
    type(unit_p20_p00_m20_p00) :: d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10
    d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_m10_p00_p20_p10

elemental function d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10(left, right)
    ! left unit: m.K
    ! right unit: s2.K/m/kg
    ! result unit: m2.kg/s2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p20_p10_m20_p00) :: d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10
    d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_m10_m10_p20_p10

elemental function d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m.K
    ! right unit: m.K
    ! result unit: 1
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10
    d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10%v = left%v / right%v
end function d_unit_p10_p00_p00_p10_unit_p10_p00_p00_p10

elemental function m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m.K
    ! right unit: m/K
    ! result unit: m2
    class(unit_p10_p00_p00_p10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10
    m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10%v = left%v * right%v
end function m_unit_p10_p00_p00_p10_unit_p10_p00_p00_m10

elemental function m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/K
    ! right unit: 1
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00

elemental function m_unit_p10_p00_p00_m10_real(left, right)
    ! left unit: m/K
    ! right unit: 1
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_m10) :: m_unit_p10_p00_p00_m10_real
    m_unit_p10_p00_p00_m10_real%v = left%v * right
end function m_unit_p10_p00_p00_m10_real

elemental function d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00(left, right)
    ! left unit: m/K
    ! right unit: 1
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00
    d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p00_p00_p00_p00

elemental function d_unit_p10_p00_p00_m10_real(left, right)
    ! left unit: m/K
    ! right unit: 1
    ! result unit: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    real, intent(in) :: right
    type(unit_p10_p00_p00_m10) :: d_unit_p10_p00_p00_m10_real
    d_unit_p10_p00_p00_m10_real%v = left%v / right
end function d_unit_p10_p00_p00_m10_real

elemental function d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00(left, right)
    ! left unit: m/K
    ! right unit: m
    ! result unit: 1/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00
    d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p10_p00_p00_p00

elemental function m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00(left, right)
    ! left unit: m/K
    ! right unit: m2.kg/s2
    ! result unit: m3.kg/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p20_p10_m20_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00
    m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p20_p10_m20_p00

elemental function m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00(left, right)
    ! left unit: m/K
    ! right unit: m2/s2
    ! result unit: m3/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00
    m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p20_p00_m20_p00

elemental function d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10(left, right)
    ! left unit: m/K
    ! right unit: m2/s2/K
    ! result unit: s2/m
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p20_p00_m20_m10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10
    d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p20_p00_m20_m10

elemental function d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10(left, right)
    ! left unit: m/K
    ! right unit: m2.kg/s2/K
    ! result unit: s2/m/kg
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p20_p10_m20_m10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10
    d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p20_p10_m20_m10

elemental function m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10(left, right)
    ! left unit: m/K
    ! right unit: K
    ! result unit: m
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_p10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10
    m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p00_p00_p00_p10

elemental function m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00(left, right)
    ! left unit: m/K
    ! right unit: m/s2
    ! result unit: m2/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00
    m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p10_p00_m20_p00

elemental function m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00(left, right)
    ! left unit: m/K
    ! right unit: 1/m
    ! result unit: 1/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_m10) :: m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00
    m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_m10_p00_p00_p00

elemental function d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00(left, right)
    ! left unit: m/K
    ! right unit: s2/m2/kg
    ! result unit: m3.kg/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m20_m10_p20_p00), intent(in) :: right
    type(unit_p30_p10_m20_m10) :: d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00
    d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_m20_m10_p20_p00

elemental function d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00(left, right)
    ! left unit: m/K
    ! right unit: s2/m2
    ! result unit: m3/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p30_p00_m20_m10) :: d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00
    d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_m20_p00_p20_p00

elemental function m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10(left, right)
    ! left unit: m/K
    ! right unit: s2.K/m2
    ! result unit: s2/m
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m20_p00_p20_p10), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10
    m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_m20_p00_p20_p10

elemental function m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10(left, right)
    ! left unit: m/K
    ! right unit: s2.K/m2/kg
    ! result unit: s2/m/kg
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m20_m10_p20_p10), intent(in) :: right
    type(unit_m10_m10_p20_p00) :: m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10
    m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_m20_m10_p20_p10

elemental function d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: 1/K
    ! result unit: m
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p00_p00_p00_m10), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10
    d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p00_p00_p00_m10

elemental function d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00(left, right)
    ! left unit: m/K
    ! right unit: s2/m
    ! result unit: m2/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_p20_p00_m20_m10) :: d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00
    d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_m10_p00_p20_p00

elemental function m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00(left, right)
    ! left unit: m/K
    ! right unit: m.kg/s2
    ! result unit: m2.kg/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p10_m20_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00
    m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p10_p10_m20_p00

elemental function d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00(left, right)
    ! left unit: m/K
    ! right unit: s2/m/kg
    ! result unit: m2.kg/s2/K
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m10_m10_p20_p00), intent(in) :: right
    type(unit_p20_p10_m20_m10) :: d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00
    d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_m10_m10_p20_p00

elemental function d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10(left, right)
    ! left unit: m/K
    ! right unit: m3/s2/K
    ! result unit: s2/m2
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p30_p00_m20_m10), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10
    d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p30_p00_m20_m10

elemental function d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10(left, right)
    ! left unit: m/K
    ! right unit: m3.kg/s2/K
    ! result unit: s2/m2/kg
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p30_p10_m20_m10), intent(in) :: right
    type(unit_m20_m10_p20_p00) :: d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10
    d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p30_p10_m20_m10

elemental function m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10(left, right)
    ! left unit: m/K
    ! right unit: s2.K/m/kg
    ! result unit: s2/kg
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_m10_m10_p20_p10), intent(in) :: right
    type(unit_p00_m10_p20_p00) :: m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10
    m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_m10_m10_p20_p10

elemental function m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10(left, right)
    ! left unit: m/K
    ! right unit: m.K
    ! result unit: m2
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_p10), intent(in) :: right
    type(unit_p20_p00_p00_p00) :: m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10
    m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10%v = left%v * right%v
end function m_unit_p10_p00_p00_m10_unit_p10_p00_p00_p10

elemental function d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10(left, right)
    ! left unit: m/K
    ! right unit: m/K
    ! result unit: 1
    class(unit_p10_p00_p00_m10), intent(in) :: left
    class(unit_p10_p00_p00_m10), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10
    d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10%v = left%v / right%v
end function d_unit_p10_p00_p00_m10_unit_p10_p00_p00_m10

elemental function m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00

elemental function m_unit_m20_p10_p00_p00_real(left, right)
    ! left unit: kg/m2
    ! right unit: 1
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p10_p00_p00) :: m_unit_m20_p10_p00_p00_real
    m_unit_m20_p10_p00_p00_real%v = left%v * right
end function m_unit_m20_p10_p00_p00_real

elemental function d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_p00_p00_p00), intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00
    d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_p00_p00_p00_p00

elemental function d_unit_m20_p10_p00_p00_real(left, right)
    ! left unit: kg/m2
    ! right unit: 1
    ! result unit: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    real, intent(in) :: right
    type(unit_m20_p10_p00_p00) :: d_unit_m20_p10_p00_p00_real
    d_unit_m20_p10_p00_p00_real%v = left%v / right
end function d_unit_m20_p10_p00_p00_real

elemental function d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m
    ! result unit: kg/m3
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00
    d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_p10_p00_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m2
    ! result unit: kg
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00
    m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p20_p00_p00_p00

elemental function d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg
    ! result unit: 1/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00
    d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_p00_p10_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1/kg
    ! result unit: 1/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p00_p00), intent(in) :: right
    type(unit_m20_p00_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00
    m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p00_m10_p00_p00

elemental function d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/s2
    ! result unit: s2/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_p10_m20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00
    d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_p00_p10_m20_p00

elemental function d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m/s2
    ! result unit: s2/m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m10_p10_m20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00
    d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m10_p10_m20_p00

elemental function m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m2/s2
    ! result unit: kg/s2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00
    m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p20_p00_m20_p00

elemental function d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m3
    ! result unit: m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m30_p10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00
    d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m30_p10_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m3
    ! result unit: m.kg
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00
    m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p30_p00_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m/s2
    ! result unit: kg/m/s2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_p00_m20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00
    m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p10_p00_m20_p00

elemental function m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1/m
    ! result unit: kg/m3
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p00_p00), intent(in) :: right
    type(unit_m30_p10_p00_p00) :: m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00
    m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_m10_p00_p00_p00

elemental function d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1/m2
    ! result unit: kg
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p00_p00), intent(in) :: right
    type(unit_p00_p10_p00_p00) :: d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00
    d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m20_p00_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: s2/kg
    ! result unit: s2/m2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p00_m10_p20_p00), intent(in) :: right
    type(unit_m20_p00_p20_p00) :: m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00
    m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p00_m10_p20_p00

elemental function m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m.s2/kg
    ! result unit: s2/m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p20_p00), intent(in) :: right
    type(unit_m10_p00_p20_p00) :: m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00
    m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p10_m10_p20_p00

elemental function d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: s2/m2
    ! result unit: kg/s2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p00_p20_p00), intent(in) :: right
    type(unit_p00_p10_m20_p00) :: d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00
    d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m20_p00_p20_p00

elemental function m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m3/kg
    ! result unit: m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p30_m10_p00_p00), intent(in) :: right
    type(unit_p10_p00_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00
    m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p30_m10_p00_p00

elemental function d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: 1/m3
    ! result unit: m.kg
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m30_p00_p00_p00), intent(in) :: right
    type(unit_p10_p10_p00_p00) :: d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00
    d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m30_p00_p00_p00

elemental function d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: s2/m
    ! result unit: kg/m/s2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m10_p00_p20_p00), intent(in) :: right
    type(unit_m10_p10_m20_p00) :: d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00
    d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m10_p00_p20_p00

elemental function m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m2/s
    ! result unit: kg/s
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p20_p00_m10_p00), intent(in) :: right
    type(unit_p00_p10_m10_p00) :: m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00
    m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p20_p00_m10_p00

elemental function d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m.kg
    ! result unit: 1/m3
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_p10_p00_p00), intent(in) :: right
    type(unit_m30_p00_p00_p00) :: d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00
    d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_p10_p10_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m/kg
    ! result unit: 1/m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p00_p00), intent(in) :: right
    type(unit_m10_p00_p00_p00) :: m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00
    m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p10_m10_p00_p00

elemental function m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m.s/kg
    ! result unit: s/m
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p10_m10_p10_p00), intent(in) :: right
    type(unit_m10_p00_p10_p00) :: m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00
    m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p10_m10_p10_p00

elemental function m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00(left, right)
    ! left unit: kg/m2
    ! right unit: m3/s2
    ! result unit: m.kg/s2
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_p30_p00_m20_p00), intent(in) :: right
    type(unit_p10_p10_m20_p00) :: m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00
    m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00%v = left%v * right%v
end function m_unit_m20_p10_p00_p00_unit_p30_p00_m20_p00

elemental function d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00(left, right)
    ! left unit: kg/m2
    ! right unit: kg/m2
    ! result unit: 1
    class(unit_m20_p10_p00_p00), intent(in) :: left
    class(unit_m20_p10_p00_p00), intent(in) :: right
    type(unit_p00_p00_p00_p00) :: d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00
    d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00%v = left%v / right%v
end function d_unit_m20_p10_p00_p00_unit_m20_p10_p00_p00

elemental function sqrt_unit_p00_p00_p00_p00(arg)
    ! arg: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg
    type(unit_p00_p00_p00_p00) :: sqrt_unit_p00_p00_p00_p00
    sqrt_unit_p00_p00_p00_p00%v = sqrt(arg%v)
end function sqrt_unit_p00_p00_p00_p00

elemental function square_unit_p00_p00_p00_p00(arg)
    ! arg: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg
    type(unit_p00_p00_p00_p00) :: square_unit_p00_p00_p00_p00
    square_unit_p00_p00_p00_p00%v = (arg%v)**2
end function square_unit_p00_p00_p00_p00

elemental function square_unit_p10_p00_p00_p00(arg)
    ! arg: m
    ! result: m2
    class(unit_p10_p00_p00_p00), intent(in) :: arg
    type(unit_p20_p00_p00_p00) :: square_unit_p10_p00_p00_p00
    square_unit_p10_p00_p00_p00%v = (arg%v)**2
end function square_unit_p10_p00_p00_p00

elemental function square_unit_p10_p00_m10_p00(arg)
    ! arg: m/s
    ! result: m2/s2
    class(unit_p10_p00_m10_p00), intent(in) :: arg
    type(unit_p20_p00_m20_p00) :: square_unit_p10_p00_m10_p00
    square_unit_p10_p00_m10_p00%v = (arg%v)**2
end function square_unit_p10_p00_m10_p00

elemental function sqrt_unit_p20_p00_p00_p00(arg)
    ! arg: m2
    ! result: m
    class(unit_p20_p00_p00_p00), intent(in) :: arg
    type(unit_p10_p00_p00_p00) :: sqrt_unit_p20_p00_p00_p00
    sqrt_unit_p20_p00_p00_p00%v = sqrt(arg%v)
end function sqrt_unit_p20_p00_p00_p00

elemental function sqrt_unit_p20_p00_m20_p00(arg)
    ! arg: m2/s2
    ! result: m/s
    class(unit_p20_p00_m20_p00), intent(in) :: arg
    type(unit_p10_p00_m10_p00) :: sqrt_unit_p20_p00_m20_p00
    sqrt_unit_p20_p00_m20_p00%v = sqrt(arg%v)
end function sqrt_unit_p20_p00_m20_p00

elemental function square_unit_m10_p00_p00_p00(arg)
    ! arg: 1/m
    ! result: 1/m2
    class(unit_m10_p00_p00_p00), intent(in) :: arg
    type(unit_m20_p00_p00_p00) :: square_unit_m10_p00_p00_p00
    square_unit_m10_p00_p00_p00%v = (arg%v)**2
end function square_unit_m10_p00_p00_p00

elemental function square_unit_m10_p00_p10_p00(arg)
    ! arg: s/m
    ! result: s2/m2
    class(unit_m10_p00_p10_p00), intent(in) :: arg
    type(unit_m20_p00_p20_p00) :: square_unit_m10_p00_p10_p00
    square_unit_m10_p00_p10_p00%v = (arg%v)**2
end function square_unit_m10_p00_p10_p00

elemental function sqrt_unit_m20_p00_p00_p00(arg)
    ! arg: 1/m2
    ! result: 1/m
    class(unit_m20_p00_p00_p00), intent(in) :: arg
    type(unit_m10_p00_p00_p00) :: sqrt_unit_m20_p00_p00_p00
    sqrt_unit_m20_p00_p00_p00%v = sqrt(arg%v)
end function sqrt_unit_m20_p00_p00_p00

elemental function sqrt_unit_m20_p00_p20_p00(arg)
    ! arg: s2/m2
    ! result: s/m
    class(unit_m20_p00_p20_p00), intent(in) :: arg
    type(unit_m10_p00_p10_p00) :: sqrt_unit_m20_p00_p20_p00
    sqrt_unit_m20_p00_p20_p00%v = sqrt(arg%v)
end function sqrt_unit_m20_p00_p20_p00

elemental function sin_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: sin_unit_p00_p00_p00_p00
    sin_unit_p00_p00_p00_p00%v = sin(arg1%v)
end function sin_unit_p00_p00_p00_p00

elemental function cos_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: cos_unit_p00_p00_p00_p00
    cos_unit_p00_p00_p00_p00%v = cos(arg1%v)
end function cos_unit_p00_p00_p00_p00

elemental function tan_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: tan_unit_p00_p00_p00_p00
    tan_unit_p00_p00_p00_p00%v = tan(arg1%v)
end function tan_unit_p00_p00_p00_p00

elemental function exp_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: exp_unit_p00_p00_p00_p00
    exp_unit_p00_p00_p00_p00%v = exp(arg1%v)
end function exp_unit_p00_p00_p00_p00

elemental function log_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: log_unit_p00_p00_p00_p00
    log_unit_p00_p00_p00_p00%v = log(arg1%v)
end function log_unit_p00_p00_p00_p00

elemental function tanh_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: tanh_unit_p00_p00_p00_p00
    tanh_unit_p00_p00_p00_p00%v = tanh(arg1%v)
end function tanh_unit_p00_p00_p00_p00

elemental function atanh_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: atanh_unit_p00_p00_p00_p00
    atanh_unit_p00_p00_p00_p00%v = atanh(arg1%v)
end function atanh_unit_p00_p00_p00_p00

elemental function abs_unit_p00_p00_p00_p00(arg1)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    type(unit_p00_p00_p00_p00) :: abs_unit_p00_p00_p00_p00
    abs_unit_p00_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_p00_p00_p00_p00

elemental function abs_unit_p10_p00_p00_p00(arg1)
    ! args: m
    ! result: m
    class(unit_p10_p00_p00_p00), intent(in) :: arg1
    type(unit_p10_p00_p00_p00) :: abs_unit_p10_p00_p00_p00
    abs_unit_p10_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_p10_p00_p00_p00

elemental function abs_unit_p10_p00_m10_p00(arg1)
    ! args: m/s
    ! result: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: arg1
    type(unit_p10_p00_m10_p00) :: abs_unit_p10_p00_m10_p00
    abs_unit_p10_p00_m10_p00%v = abs(arg1%v)
end function abs_unit_p10_p00_m10_p00

elemental function abs_unit_p20_p00_p00_p00(arg1)
    ! args: m2
    ! result: m2
    class(unit_p20_p00_p00_p00), intent(in) :: arg1
    type(unit_p20_p00_p00_p00) :: abs_unit_p20_p00_p00_p00
    abs_unit_p20_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_p20_p00_p00_p00

elemental function abs_unit_p00_p10_p00_p00(arg1)
    ! args: kg
    ! result: kg
    class(unit_p00_p10_p00_p00), intent(in) :: arg1
    type(unit_p00_p10_p00_p00) :: abs_unit_p00_p10_p00_p00
    abs_unit_p00_p10_p00_p00%v = abs(arg1%v)
end function abs_unit_p00_p10_p00_p00

elemental function abs_unit_p00_m10_p00_p00(arg1)
    ! args: 1/kg
    ! result: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: arg1
    type(unit_p00_m10_p00_p00) :: abs_unit_p00_m10_p00_p00
    abs_unit_p00_m10_p00_p00%v = abs(arg1%v)
end function abs_unit_p00_m10_p00_p00

elemental function abs_unit_p00_p10_m20_p00(arg1)
    ! args: kg/s2
    ! result: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: arg1
    type(unit_p00_p10_m20_p00) :: abs_unit_p00_p10_m20_p00
    abs_unit_p00_p10_m20_p00%v = abs(arg1%v)
end function abs_unit_p00_p10_m20_p00

elemental function abs_unit_m10_p10_m20_p00(arg1)
    ! args: kg/m/s2
    ! result: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: arg1
    type(unit_m10_p10_m20_p00) :: abs_unit_m10_p10_m20_p00
    abs_unit_m10_p10_m20_p00%v = abs(arg1%v)
end function abs_unit_m10_p10_m20_p00

elemental function abs_unit_p00_p10_m10_p00(arg1)
    ! args: kg/s
    ! result: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: arg1
    type(unit_p00_p10_m10_p00) :: abs_unit_p00_p10_m10_p00
    abs_unit_p00_p10_m10_p00%v = abs(arg1%v)
end function abs_unit_p00_p10_m10_p00

elemental function abs_unit_p20_p10_m20_p00(arg1)
    ! args: m2.kg/s2
    ! result: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: arg1
    type(unit_p20_p10_m20_p00) :: abs_unit_p20_p10_m20_p00
    abs_unit_p20_p10_m20_p00%v = abs(arg1%v)
end function abs_unit_p20_p10_m20_p00

elemental function abs_unit_p20_p00_m20_p00(arg1)
    ! args: m2/s2
    ! result: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: arg1
    type(unit_p20_p00_m20_p00) :: abs_unit_p20_p00_m20_p00
    abs_unit_p20_p00_m20_p00%v = abs(arg1%v)
end function abs_unit_p20_p00_m20_p00

elemental function abs_unit_p20_p00_m20_m10(arg1)
    ! args: m2/s2/K
    ! result: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: arg1
    type(unit_p20_p00_m20_m10) :: abs_unit_p20_p00_m20_m10
    abs_unit_p20_p00_m20_m10%v = abs(arg1%v)
end function abs_unit_p20_p00_m20_m10

elemental function abs_unit_p20_p10_m20_m10(arg1)
    ! args: m2.kg/s2/K
    ! result: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: arg1
    type(unit_p20_p10_m20_m10) :: abs_unit_p20_p10_m20_m10
    abs_unit_p20_p10_m20_m10%v = abs(arg1%v)
end function abs_unit_p20_p10_m20_m10

elemental function abs_unit_p00_p00_p00_p10(arg1)
    ! args: K
    ! result: K
    class(unit_p00_p00_p00_p10), intent(in) :: arg1
    type(unit_p00_p00_p00_p10) :: abs_unit_p00_p00_p00_p10
    abs_unit_p00_p00_p00_p10%v = abs(arg1%v)
end function abs_unit_p00_p00_p00_p10

elemental function abs_unit_m30_p10_p00_p00(arg1)
    ! args: kg/m3
    ! result: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: arg1
    type(unit_m30_p10_p00_p00) :: abs_unit_m30_p10_p00_p00
    abs_unit_m30_p10_p00_p00%v = abs(arg1%v)
end function abs_unit_m30_p10_p00_p00

elemental function abs_unit_p00_p00_p10_p00(arg1)
    ! args: s
    ! result: s
    class(unit_p00_p00_p10_p00), intent(in) :: arg1
    type(unit_p00_p00_p10_p00) :: abs_unit_p00_p00_p10_p00
    abs_unit_p00_p00_p10_p00%v = abs(arg1%v)
end function abs_unit_p00_p00_p10_p00

elemental function abs_unit_p30_p00_p00_p00(arg1)
    ! args: m3
    ! result: m3
    class(unit_p30_p00_p00_p00), intent(in) :: arg1
    type(unit_p30_p00_p00_p00) :: abs_unit_p30_p00_p00_p00
    abs_unit_p30_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_p30_p00_p00_p00

elemental function abs_unit_p10_p00_m20_p00(arg1)
    ! args: m/s2
    ! result: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: arg1
    type(unit_p10_p00_m20_p00) :: abs_unit_p10_p00_m20_p00
    abs_unit_p10_p00_m20_p00%v = abs(arg1%v)
end function abs_unit_p10_p00_m20_p00

elemental function abs_unit_m10_p00_p00_p00(arg1)
    ! args: 1/m
    ! result: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: arg1
    type(unit_m10_p00_p00_p00) :: abs_unit_m10_p00_p00_p00
    abs_unit_m10_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_m10_p00_p00_p00

elemental function abs_unit_m10_p00_p10_p00(arg1)
    ! args: s/m
    ! result: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: arg1
    type(unit_m10_p00_p10_p00) :: abs_unit_m10_p00_p10_p00
    abs_unit_m10_p00_p10_p00%v = abs(arg1%v)
end function abs_unit_m10_p00_p10_p00

elemental function abs_unit_m20_p00_p00_p00(arg1)
    ! args: 1/m2
    ! result: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: arg1
    type(unit_m20_p00_p00_p00) :: abs_unit_m20_p00_p00_p00
    abs_unit_m20_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_m20_p00_p00_p00

elemental function abs_unit_p00_m10_p20_p00(arg1)
    ! args: s2/kg
    ! result: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: arg1
    type(unit_p00_m10_p20_p00) :: abs_unit_p00_m10_p20_p00
    abs_unit_p00_m10_p20_p00%v = abs(arg1%v)
end function abs_unit_p00_m10_p20_p00

elemental function abs_unit_p10_m10_p20_p00(arg1)
    ! args: m.s2/kg
    ! result: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: arg1
    type(unit_p10_m10_p20_p00) :: abs_unit_p10_m10_p20_p00
    abs_unit_p10_m10_p20_p00%v = abs(arg1%v)
end function abs_unit_p10_m10_p20_p00

elemental function abs_unit_p00_m10_p10_p00(arg1)
    ! args: s/kg
    ! result: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: arg1
    type(unit_p00_m10_p10_p00) :: abs_unit_p00_m10_p10_p00
    abs_unit_p00_m10_p10_p00%v = abs(arg1%v)
end function abs_unit_p00_m10_p10_p00

elemental function abs_unit_m20_m10_p20_p00(arg1)
    ! args: s2/m2/kg
    ! result: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: arg1
    type(unit_m20_m10_p20_p00) :: abs_unit_m20_m10_p20_p00
    abs_unit_m20_m10_p20_p00%v = abs(arg1%v)
end function abs_unit_m20_m10_p20_p00

elemental function abs_unit_m20_p00_p20_p00(arg1)
    ! args: s2/m2
    ! result: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: arg1
    type(unit_m20_p00_p20_p00) :: abs_unit_m20_p00_p20_p00
    abs_unit_m20_p00_p20_p00%v = abs(arg1%v)
end function abs_unit_m20_p00_p20_p00

elemental function abs_unit_m20_p00_p20_p10(arg1)
    ! args: s2.K/m2
    ! result: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: arg1
    type(unit_m20_p00_p20_p10) :: abs_unit_m20_p00_p20_p10
    abs_unit_m20_p00_p20_p10%v = abs(arg1%v)
end function abs_unit_m20_p00_p20_p10

elemental function abs_unit_m20_m10_p20_p10(arg1)
    ! args: s2.K/m2/kg
    ! result: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: arg1
    type(unit_m20_m10_p20_p10) :: abs_unit_m20_m10_p20_p10
    abs_unit_m20_m10_p20_p10%v = abs(arg1%v)
end function abs_unit_m20_m10_p20_p10

elemental function abs_unit_p00_p00_p00_m10(arg1)
    ! args: 1/K
    ! result: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: arg1
    type(unit_p00_p00_p00_m10) :: abs_unit_p00_p00_p00_m10
    abs_unit_p00_p00_p00_m10%v = abs(arg1%v)
end function abs_unit_p00_p00_p00_m10

elemental function abs_unit_p30_m10_p00_p00(arg1)
    ! args: m3/kg
    ! result: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: arg1
    type(unit_p30_m10_p00_p00) :: abs_unit_p30_m10_p00_p00
    abs_unit_p30_m10_p00_p00%v = abs(arg1%v)
end function abs_unit_p30_m10_p00_p00

elemental function abs_unit_p00_p00_m10_p00(arg1)
    ! args: 1/s
    ! result: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: arg1
    type(unit_p00_p00_m10_p00) :: abs_unit_p00_p00_m10_p00
    abs_unit_p00_p00_m10_p00%v = abs(arg1%v)
end function abs_unit_p00_p00_m10_p00

elemental function abs_unit_m30_p00_p00_p00(arg1)
    ! args: 1/m3
    ! result: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: arg1
    type(unit_m30_p00_p00_p00) :: abs_unit_m30_p00_p00_p00
    abs_unit_m30_p00_p00_p00%v = abs(arg1%v)
end function abs_unit_m30_p00_p00_p00

elemental function abs_unit_m10_p00_p20_p00(arg1)
    ! args: s2/m
    ! result: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: arg1
    type(unit_m10_p00_p20_p00) :: abs_unit_m10_p00_p20_p00
    abs_unit_m10_p00_p20_p00%v = abs(arg1%v)
end function abs_unit_m10_p00_p20_p00

elemental function abs_unit_p20_p00_m10_p00(arg1)
    ! args: m2/s
    ! result: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: arg1
    type(unit_p20_p00_m10_p00) :: abs_unit_p20_p00_m10_p00
    abs_unit_p20_p00_m10_p00%v = abs(arg1%v)
end function abs_unit_p20_p00_m10_p00

elemental function abs_unit_p10_p10_p00_p00(arg1)
    ! args: m.kg
    ! result: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: arg1
    type(unit_p10_p10_p00_p00) :: abs_unit_p10_p10_p00_p00
    abs_unit_p10_p10_p00_p00%v = abs(arg1%v)
end function abs_unit_p10_p10_p00_p00

elemental function abs_unit_p10_m10_p00_p00(arg1)
    ! args: m/kg
    ! result: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: arg1
    type(unit_p10_m10_p00_p00) :: abs_unit_p10_m10_p00_p00
    abs_unit_p10_m10_p00_p00%v = abs(arg1%v)
end function abs_unit_p10_m10_p00_p00

elemental function abs_unit_p10_p10_m20_p00(arg1)
    ! args: m.kg/s2
    ! result: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: arg1
    type(unit_p10_p10_m20_p00) :: abs_unit_p10_p10_m20_p00
    abs_unit_p10_p10_m20_p00%v = abs(arg1%v)
end function abs_unit_p10_p10_m20_p00

elemental function abs_unit_p20_m10_p20_p00(arg1)
    ! args: m2.s2/kg
    ! result: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: arg1
    type(unit_p20_m10_p20_p00) :: abs_unit_p20_m10_p20_p00
    abs_unit_p20_m10_p20_p00%v = abs(arg1%v)
end function abs_unit_p20_m10_p20_p00

elemental function abs_unit_p10_p10_m10_p00(arg1)
    ! args: m.kg/s
    ! result: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: arg1
    type(unit_p10_p10_m10_p00) :: abs_unit_p10_p10_m10_p00
    abs_unit_p10_p10_m10_p00%v = abs(arg1%v)
end function abs_unit_p10_p10_m10_p00

elemental function abs_unit_p10_m10_p10_p00(arg1)
    ! args: m.s/kg
    ! result: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: arg1
    type(unit_p10_m10_p10_p00) :: abs_unit_p10_m10_p10_p00
    abs_unit_p10_m10_p10_p00%v = abs(arg1%v)
end function abs_unit_p10_m10_p10_p00

elemental function abs_unit_p30_p10_m20_p00(arg1)
    ! args: m3.kg/s2
    ! result: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: arg1
    type(unit_p30_p10_m20_p00) :: abs_unit_p30_p10_m20_p00
    abs_unit_p30_p10_m20_p00%v = abs(arg1%v)
end function abs_unit_p30_p10_m20_p00

elemental function abs_unit_m10_m10_p20_p00(arg1)
    ! args: s2/m/kg
    ! result: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: arg1
    type(unit_m10_m10_p20_p00) :: abs_unit_m10_m10_p20_p00
    abs_unit_m10_m10_p20_p00%v = abs(arg1%v)
end function abs_unit_m10_m10_p20_p00

elemental function abs_unit_p30_p00_m20_p00(arg1)
    ! args: m3/s2
    ! result: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: arg1
    type(unit_p30_p00_m20_p00) :: abs_unit_p30_p00_m20_p00
    abs_unit_p30_p00_m20_p00%v = abs(arg1%v)
end function abs_unit_p30_p00_m20_p00

elemental function abs_unit_p30_p00_m20_m10(arg1)
    ! args: m3/s2/K
    ! result: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: arg1
    type(unit_p30_p00_m20_m10) :: abs_unit_p30_p00_m20_m10
    abs_unit_p30_p00_m20_m10%v = abs(arg1%v)
end function abs_unit_p30_p00_m20_m10

elemental function abs_unit_m10_p00_p20_p10(arg1)
    ! args: s2.K/m
    ! result: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: arg1
    type(unit_m10_p00_p20_p10) :: abs_unit_m10_p00_p20_p10
    abs_unit_m10_p00_p20_p10%v = abs(arg1%v)
end function abs_unit_m10_p00_p20_p10

elemental function abs_unit_p30_p10_m20_m10(arg1)
    ! args: m3.kg/s2/K
    ! result: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: arg1
    type(unit_p30_p10_m20_m10) :: abs_unit_p30_p10_m20_m10
    abs_unit_p30_p10_m20_m10%v = abs(arg1%v)
end function abs_unit_p30_p10_m20_m10

elemental function abs_unit_m10_m10_p20_p10(arg1)
    ! args: s2.K/m/kg
    ! result: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: arg1
    type(unit_m10_m10_p20_p10) :: abs_unit_m10_m10_p20_p10
    abs_unit_m10_m10_p20_p10%v = abs(arg1%v)
end function abs_unit_m10_m10_p20_p10

elemental function abs_unit_p10_p00_p00_p10(arg1)
    ! args: m.K
    ! result: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: arg1
    type(unit_p10_p00_p00_p10) :: abs_unit_p10_p00_p00_p10
    abs_unit_p10_p00_p00_p10%v = abs(arg1%v)
end function abs_unit_p10_p00_p00_p10

elemental function abs_unit_p10_p00_p00_m10(arg1)
    ! args: m/K
    ! result: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: arg1
    type(unit_p10_p00_p00_m10) :: abs_unit_p10_p00_p00_m10
    abs_unit_p10_p00_p00_m10%v = abs(arg1%v)
end function abs_unit_p10_p00_p00_m10

elemental function abs_unit_m20_p10_p00_p00(arg1)
    ! args: kg/m2
    ! result: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: arg1
    type(unit_m20_p10_p00_p00) :: abs_unit_m20_p10_p00_p00
    abs_unit_m20_p10_p00_p00%v = abs(arg1%v)
end function abs_unit_m20_p10_p00_p00

elemental function min_unit_p00_p00_p00_p00(arg1, arg2)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    class(unit_p00_p00_p00_p00), intent(in) :: arg2
    type(unit_p00_p00_p00_p00) :: min_unit_p00_p00_p00_p00
    min_unit_p00_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p00_p00_p00

elemental function min_unit_p10_p00_p00_p00(arg1, arg2)
    ! args: m
    ! result: m
    class(unit_p10_p00_p00_p00), intent(in) :: arg1
    class(unit_p10_p00_p00_p00), intent(in) :: arg2
    type(unit_p10_p00_p00_p00) :: min_unit_p10_p00_p00_p00
    min_unit_p10_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p00_p00_p00

elemental function min_unit_p10_p00_m10_p00(arg1, arg2)
    ! args: m/s
    ! result: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: arg1
    class(unit_p10_p00_m10_p00), intent(in) :: arg2
    type(unit_p10_p00_m10_p00) :: min_unit_p10_p00_m10_p00
    min_unit_p10_p00_m10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p00_m10_p00

elemental function min_unit_p20_p00_p00_p00(arg1, arg2)
    ! args: m2
    ! result: m2
    class(unit_p20_p00_p00_p00), intent(in) :: arg1
    class(unit_p20_p00_p00_p00), intent(in) :: arg2
    type(unit_p20_p00_p00_p00) :: min_unit_p20_p00_p00_p00
    min_unit_p20_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p20_p00_p00_p00

elemental function min_unit_p00_p10_p00_p00(arg1, arg2)
    ! args: kg
    ! result: kg
    class(unit_p00_p10_p00_p00), intent(in) :: arg1
    class(unit_p00_p10_p00_p00), intent(in) :: arg2
    type(unit_p00_p10_p00_p00) :: min_unit_p00_p10_p00_p00
    min_unit_p00_p10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p10_p00_p00

elemental function min_unit_p00_m10_p00_p00(arg1, arg2)
    ! args: 1/kg
    ! result: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: arg1
    class(unit_p00_m10_p00_p00), intent(in) :: arg2
    type(unit_p00_m10_p00_p00) :: min_unit_p00_m10_p00_p00
    min_unit_p00_m10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_m10_p00_p00

elemental function min_unit_p00_p10_m20_p00(arg1, arg2)
    ! args: kg/s2
    ! result: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: arg1
    class(unit_p00_p10_m20_p00), intent(in) :: arg2
    type(unit_p00_p10_m20_p00) :: min_unit_p00_p10_m20_p00
    min_unit_p00_p10_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p10_m20_p00

elemental function min_unit_m10_p10_m20_p00(arg1, arg2)
    ! args: kg/m/s2
    ! result: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: arg1
    class(unit_m10_p10_m20_p00), intent(in) :: arg2
    type(unit_m10_p10_m20_p00) :: min_unit_m10_p10_m20_p00
    min_unit_m10_p10_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_m10_p10_m20_p00

elemental function min_unit_p00_p10_m10_p00(arg1, arg2)
    ! args: kg/s
    ! result: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: arg1
    class(unit_p00_p10_m10_p00), intent(in) :: arg2
    type(unit_p00_p10_m10_p00) :: min_unit_p00_p10_m10_p00
    min_unit_p00_p10_m10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p10_m10_p00

elemental function min_unit_p20_p10_m20_p00(arg1, arg2)
    ! args: m2.kg/s2
    ! result: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: arg1
    class(unit_p20_p10_m20_p00), intent(in) :: arg2
    type(unit_p20_p10_m20_p00) :: min_unit_p20_p10_m20_p00
    min_unit_p20_p10_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p20_p10_m20_p00

elemental function min_unit_p20_p00_m20_p00(arg1, arg2)
    ! args: m2/s2
    ! result: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: arg1
    class(unit_p20_p00_m20_p00), intent(in) :: arg2
    type(unit_p20_p00_m20_p00) :: min_unit_p20_p00_m20_p00
    min_unit_p20_p00_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p20_p00_m20_p00

elemental function min_unit_p20_p00_m20_m10(arg1, arg2)
    ! args: m2/s2/K
    ! result: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: arg1
    class(unit_p20_p00_m20_m10), intent(in) :: arg2
    type(unit_p20_p00_m20_m10) :: min_unit_p20_p00_m20_m10
    min_unit_p20_p00_m20_m10%v = min(arg1%v, arg2%v)
end function min_unit_p20_p00_m20_m10

elemental function min_unit_p20_p10_m20_m10(arg1, arg2)
    ! args: m2.kg/s2/K
    ! result: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: arg1
    class(unit_p20_p10_m20_m10), intent(in) :: arg2
    type(unit_p20_p10_m20_m10) :: min_unit_p20_p10_m20_m10
    min_unit_p20_p10_m20_m10%v = min(arg1%v, arg2%v)
end function min_unit_p20_p10_m20_m10

elemental function min_unit_p00_p00_p00_p10(arg1, arg2)
    ! args: K
    ! result: K
    class(unit_p00_p00_p00_p10), intent(in) :: arg1
    class(unit_p00_p00_p00_p10), intent(in) :: arg2
    type(unit_p00_p00_p00_p10) :: min_unit_p00_p00_p00_p10
    min_unit_p00_p00_p00_p10%v = min(arg1%v, arg2%v)
end function min_unit_p00_p00_p00_p10

elemental function min_unit_m30_p10_p00_p00(arg1, arg2)
    ! args: kg/m3
    ! result: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: arg1
    class(unit_m30_p10_p00_p00), intent(in) :: arg2
    type(unit_m30_p10_p00_p00) :: min_unit_m30_p10_p00_p00
    min_unit_m30_p10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_m30_p10_p00_p00

elemental function min_unit_p00_p00_p10_p00(arg1, arg2)
    ! args: s
    ! result: s
    class(unit_p00_p00_p10_p00), intent(in) :: arg1
    class(unit_p00_p00_p10_p00), intent(in) :: arg2
    type(unit_p00_p00_p10_p00) :: min_unit_p00_p00_p10_p00
    min_unit_p00_p00_p10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p00_p10_p00

elemental function min_unit_p30_p00_p00_p00(arg1, arg2)
    ! args: m3
    ! result: m3
    class(unit_p30_p00_p00_p00), intent(in) :: arg1
    class(unit_p30_p00_p00_p00), intent(in) :: arg2
    type(unit_p30_p00_p00_p00) :: min_unit_p30_p00_p00_p00
    min_unit_p30_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p30_p00_p00_p00

elemental function min_unit_p10_p00_m20_p00(arg1, arg2)
    ! args: m/s2
    ! result: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: arg1
    class(unit_p10_p00_m20_p00), intent(in) :: arg2
    type(unit_p10_p00_m20_p00) :: min_unit_p10_p00_m20_p00
    min_unit_p10_p00_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p00_m20_p00

elemental function min_unit_m10_p00_p00_p00(arg1, arg2)
    ! args: 1/m
    ! result: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: arg1
    class(unit_m10_p00_p00_p00), intent(in) :: arg2
    type(unit_m10_p00_p00_p00) :: min_unit_m10_p00_p00_p00
    min_unit_m10_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_m10_p00_p00_p00

elemental function min_unit_m10_p00_p10_p00(arg1, arg2)
    ! args: s/m
    ! result: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: arg1
    class(unit_m10_p00_p10_p00), intent(in) :: arg2
    type(unit_m10_p00_p10_p00) :: min_unit_m10_p00_p10_p00
    min_unit_m10_p00_p10_p00%v = min(arg1%v, arg2%v)
end function min_unit_m10_p00_p10_p00

elemental function min_unit_m20_p00_p00_p00(arg1, arg2)
    ! args: 1/m2
    ! result: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: arg1
    class(unit_m20_p00_p00_p00), intent(in) :: arg2
    type(unit_m20_p00_p00_p00) :: min_unit_m20_p00_p00_p00
    min_unit_m20_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_m20_p00_p00_p00

elemental function min_unit_p00_m10_p20_p00(arg1, arg2)
    ! args: s2/kg
    ! result: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: arg1
    class(unit_p00_m10_p20_p00), intent(in) :: arg2
    type(unit_p00_m10_p20_p00) :: min_unit_p00_m10_p20_p00
    min_unit_p00_m10_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_m10_p20_p00

elemental function min_unit_p10_m10_p20_p00(arg1, arg2)
    ! args: m.s2/kg
    ! result: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: arg1
    class(unit_p10_m10_p20_p00), intent(in) :: arg2
    type(unit_p10_m10_p20_p00) :: min_unit_p10_m10_p20_p00
    min_unit_p10_m10_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_m10_p20_p00

elemental function min_unit_p00_m10_p10_p00(arg1, arg2)
    ! args: s/kg
    ! result: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: arg1
    class(unit_p00_m10_p10_p00), intent(in) :: arg2
    type(unit_p00_m10_p10_p00) :: min_unit_p00_m10_p10_p00
    min_unit_p00_m10_p10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_m10_p10_p00

elemental function min_unit_m20_m10_p20_p00(arg1, arg2)
    ! args: s2/m2/kg
    ! result: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: arg1
    class(unit_m20_m10_p20_p00), intent(in) :: arg2
    type(unit_m20_m10_p20_p00) :: min_unit_m20_m10_p20_p00
    min_unit_m20_m10_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_m20_m10_p20_p00

elemental function min_unit_m20_p00_p20_p00(arg1, arg2)
    ! args: s2/m2
    ! result: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: arg1
    class(unit_m20_p00_p20_p00), intent(in) :: arg2
    type(unit_m20_p00_p20_p00) :: min_unit_m20_p00_p20_p00
    min_unit_m20_p00_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_m20_p00_p20_p00

elemental function min_unit_m20_p00_p20_p10(arg1, arg2)
    ! args: s2.K/m2
    ! result: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: arg1
    class(unit_m20_p00_p20_p10), intent(in) :: arg2
    type(unit_m20_p00_p20_p10) :: min_unit_m20_p00_p20_p10
    min_unit_m20_p00_p20_p10%v = min(arg1%v, arg2%v)
end function min_unit_m20_p00_p20_p10

elemental function min_unit_m20_m10_p20_p10(arg1, arg2)
    ! args: s2.K/m2/kg
    ! result: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: arg1
    class(unit_m20_m10_p20_p10), intent(in) :: arg2
    type(unit_m20_m10_p20_p10) :: min_unit_m20_m10_p20_p10
    min_unit_m20_m10_p20_p10%v = min(arg1%v, arg2%v)
end function min_unit_m20_m10_p20_p10

elemental function min_unit_p00_p00_p00_m10(arg1, arg2)
    ! args: 1/K
    ! result: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: arg1
    class(unit_p00_p00_p00_m10), intent(in) :: arg2
    type(unit_p00_p00_p00_m10) :: min_unit_p00_p00_p00_m10
    min_unit_p00_p00_p00_m10%v = min(arg1%v, arg2%v)
end function min_unit_p00_p00_p00_m10

elemental function min_unit_p30_m10_p00_p00(arg1, arg2)
    ! args: m3/kg
    ! result: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: arg1
    class(unit_p30_m10_p00_p00), intent(in) :: arg2
    type(unit_p30_m10_p00_p00) :: min_unit_p30_m10_p00_p00
    min_unit_p30_m10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p30_m10_p00_p00

elemental function min_unit_p00_p00_m10_p00(arg1, arg2)
    ! args: 1/s
    ! result: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: arg1
    class(unit_p00_p00_m10_p00), intent(in) :: arg2
    type(unit_p00_p00_m10_p00) :: min_unit_p00_p00_m10_p00
    min_unit_p00_p00_m10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p00_p00_m10_p00

elemental function min_unit_m30_p00_p00_p00(arg1, arg2)
    ! args: 1/m3
    ! result: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: arg1
    class(unit_m30_p00_p00_p00), intent(in) :: arg2
    type(unit_m30_p00_p00_p00) :: min_unit_m30_p00_p00_p00
    min_unit_m30_p00_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_m30_p00_p00_p00

elemental function min_unit_m10_p00_p20_p00(arg1, arg2)
    ! args: s2/m
    ! result: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: arg1
    class(unit_m10_p00_p20_p00), intent(in) :: arg2
    type(unit_m10_p00_p20_p00) :: min_unit_m10_p00_p20_p00
    min_unit_m10_p00_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_m10_p00_p20_p00

elemental function min_unit_p20_p00_m10_p00(arg1, arg2)
    ! args: m2/s
    ! result: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: arg1
    class(unit_p20_p00_m10_p00), intent(in) :: arg2
    type(unit_p20_p00_m10_p00) :: min_unit_p20_p00_m10_p00
    min_unit_p20_p00_m10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p20_p00_m10_p00

elemental function min_unit_p10_p10_p00_p00(arg1, arg2)
    ! args: m.kg
    ! result: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: arg1
    class(unit_p10_p10_p00_p00), intent(in) :: arg2
    type(unit_p10_p10_p00_p00) :: min_unit_p10_p10_p00_p00
    min_unit_p10_p10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p10_p00_p00

elemental function min_unit_p10_m10_p00_p00(arg1, arg2)
    ! args: m/kg
    ! result: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: arg1
    class(unit_p10_m10_p00_p00), intent(in) :: arg2
    type(unit_p10_m10_p00_p00) :: min_unit_p10_m10_p00_p00
    min_unit_p10_m10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_m10_p00_p00

elemental function min_unit_p10_p10_m20_p00(arg1, arg2)
    ! args: m.kg/s2
    ! result: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: arg1
    class(unit_p10_p10_m20_p00), intent(in) :: arg2
    type(unit_p10_p10_m20_p00) :: min_unit_p10_p10_m20_p00
    min_unit_p10_p10_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p10_m20_p00

elemental function min_unit_p20_m10_p20_p00(arg1, arg2)
    ! args: m2.s2/kg
    ! result: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: arg1
    class(unit_p20_m10_p20_p00), intent(in) :: arg2
    type(unit_p20_m10_p20_p00) :: min_unit_p20_m10_p20_p00
    min_unit_p20_m10_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p20_m10_p20_p00

elemental function min_unit_p10_p10_m10_p00(arg1, arg2)
    ! args: m.kg/s
    ! result: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: arg1
    class(unit_p10_p10_m10_p00), intent(in) :: arg2
    type(unit_p10_p10_m10_p00) :: min_unit_p10_p10_m10_p00
    min_unit_p10_p10_m10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_p10_m10_p00

elemental function min_unit_p10_m10_p10_p00(arg1, arg2)
    ! args: m.s/kg
    ! result: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: arg1
    class(unit_p10_m10_p10_p00), intent(in) :: arg2
    type(unit_p10_m10_p10_p00) :: min_unit_p10_m10_p10_p00
    min_unit_p10_m10_p10_p00%v = min(arg1%v, arg2%v)
end function min_unit_p10_m10_p10_p00

elemental function min_unit_p30_p10_m20_p00(arg1, arg2)
    ! args: m3.kg/s2
    ! result: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: arg1
    class(unit_p30_p10_m20_p00), intent(in) :: arg2
    type(unit_p30_p10_m20_p00) :: min_unit_p30_p10_m20_p00
    min_unit_p30_p10_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p30_p10_m20_p00

elemental function min_unit_m10_m10_p20_p00(arg1, arg2)
    ! args: s2/m/kg
    ! result: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: arg1
    class(unit_m10_m10_p20_p00), intent(in) :: arg2
    type(unit_m10_m10_p20_p00) :: min_unit_m10_m10_p20_p00
    min_unit_m10_m10_p20_p00%v = min(arg1%v, arg2%v)
end function min_unit_m10_m10_p20_p00

elemental function min_unit_p30_p00_m20_p00(arg1, arg2)
    ! args: m3/s2
    ! result: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: arg1
    class(unit_p30_p00_m20_p00), intent(in) :: arg2
    type(unit_p30_p00_m20_p00) :: min_unit_p30_p00_m20_p00
    min_unit_p30_p00_m20_p00%v = min(arg1%v, arg2%v)
end function min_unit_p30_p00_m20_p00

elemental function min_unit_p30_p00_m20_m10(arg1, arg2)
    ! args: m3/s2/K
    ! result: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: arg1
    class(unit_p30_p00_m20_m10), intent(in) :: arg2
    type(unit_p30_p00_m20_m10) :: min_unit_p30_p00_m20_m10
    min_unit_p30_p00_m20_m10%v = min(arg1%v, arg2%v)
end function min_unit_p30_p00_m20_m10

elemental function min_unit_m10_p00_p20_p10(arg1, arg2)
    ! args: s2.K/m
    ! result: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: arg1
    class(unit_m10_p00_p20_p10), intent(in) :: arg2
    type(unit_m10_p00_p20_p10) :: min_unit_m10_p00_p20_p10
    min_unit_m10_p00_p20_p10%v = min(arg1%v, arg2%v)
end function min_unit_m10_p00_p20_p10

elemental function min_unit_p30_p10_m20_m10(arg1, arg2)
    ! args: m3.kg/s2/K
    ! result: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: arg1
    class(unit_p30_p10_m20_m10), intent(in) :: arg2
    type(unit_p30_p10_m20_m10) :: min_unit_p30_p10_m20_m10
    min_unit_p30_p10_m20_m10%v = min(arg1%v, arg2%v)
end function min_unit_p30_p10_m20_m10

elemental function min_unit_m10_m10_p20_p10(arg1, arg2)
    ! args: s2.K/m/kg
    ! result: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: arg1
    class(unit_m10_m10_p20_p10), intent(in) :: arg2
    type(unit_m10_m10_p20_p10) :: min_unit_m10_m10_p20_p10
    min_unit_m10_m10_p20_p10%v = min(arg1%v, arg2%v)
end function min_unit_m10_m10_p20_p10

elemental function min_unit_p10_p00_p00_p10(arg1, arg2)
    ! args: m.K
    ! result: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: arg1
    class(unit_p10_p00_p00_p10), intent(in) :: arg2
    type(unit_p10_p00_p00_p10) :: min_unit_p10_p00_p00_p10
    min_unit_p10_p00_p00_p10%v = min(arg1%v, arg2%v)
end function min_unit_p10_p00_p00_p10

elemental function min_unit_p10_p00_p00_m10(arg1, arg2)
    ! args: m/K
    ! result: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: arg1
    class(unit_p10_p00_p00_m10), intent(in) :: arg2
    type(unit_p10_p00_p00_m10) :: min_unit_p10_p00_p00_m10
    min_unit_p10_p00_p00_m10%v = min(arg1%v, arg2%v)
end function min_unit_p10_p00_p00_m10

elemental function min_unit_m20_p10_p00_p00(arg1, arg2)
    ! args: kg/m2
    ! result: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: arg1
    class(unit_m20_p10_p00_p00), intent(in) :: arg2
    type(unit_m20_p10_p00_p00) :: min_unit_m20_p10_p00_p00
    min_unit_m20_p10_p00_p00%v = min(arg1%v, arg2%v)
end function min_unit_m20_p10_p00_p00

elemental function max_unit_p00_p00_p00_p00(arg1, arg2)
    ! args: 1
    ! result: 1
    class(unit_p00_p00_p00_p00), intent(in) :: arg1
    class(unit_p00_p00_p00_p00), intent(in) :: arg2
    type(unit_p00_p00_p00_p00) :: max_unit_p00_p00_p00_p00
    max_unit_p00_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p00_p00_p00

elemental function max_unit_p10_p00_p00_p00(arg1, arg2)
    ! args: m
    ! result: m
    class(unit_p10_p00_p00_p00), intent(in) :: arg1
    class(unit_p10_p00_p00_p00), intent(in) :: arg2
    type(unit_p10_p00_p00_p00) :: max_unit_p10_p00_p00_p00
    max_unit_p10_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p00_p00_p00

elemental function max_unit_p10_p00_m10_p00(arg1, arg2)
    ! args: m/s
    ! result: m/s
    class(unit_p10_p00_m10_p00), intent(in) :: arg1
    class(unit_p10_p00_m10_p00), intent(in) :: arg2
    type(unit_p10_p00_m10_p00) :: max_unit_p10_p00_m10_p00
    max_unit_p10_p00_m10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p00_m10_p00

elemental function max_unit_p20_p00_p00_p00(arg1, arg2)
    ! args: m2
    ! result: m2
    class(unit_p20_p00_p00_p00), intent(in) :: arg1
    class(unit_p20_p00_p00_p00), intent(in) :: arg2
    type(unit_p20_p00_p00_p00) :: max_unit_p20_p00_p00_p00
    max_unit_p20_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p20_p00_p00_p00

elemental function max_unit_p00_p10_p00_p00(arg1, arg2)
    ! args: kg
    ! result: kg
    class(unit_p00_p10_p00_p00), intent(in) :: arg1
    class(unit_p00_p10_p00_p00), intent(in) :: arg2
    type(unit_p00_p10_p00_p00) :: max_unit_p00_p10_p00_p00
    max_unit_p00_p10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p10_p00_p00

elemental function max_unit_p00_m10_p00_p00(arg1, arg2)
    ! args: 1/kg
    ! result: 1/kg
    class(unit_p00_m10_p00_p00), intent(in) :: arg1
    class(unit_p00_m10_p00_p00), intent(in) :: arg2
    type(unit_p00_m10_p00_p00) :: max_unit_p00_m10_p00_p00
    max_unit_p00_m10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_m10_p00_p00

elemental function max_unit_p00_p10_m20_p00(arg1, arg2)
    ! args: kg/s2
    ! result: kg/s2
    class(unit_p00_p10_m20_p00), intent(in) :: arg1
    class(unit_p00_p10_m20_p00), intent(in) :: arg2
    type(unit_p00_p10_m20_p00) :: max_unit_p00_p10_m20_p00
    max_unit_p00_p10_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p10_m20_p00

elemental function max_unit_m10_p10_m20_p00(arg1, arg2)
    ! args: kg/m/s2
    ! result: kg/m/s2
    class(unit_m10_p10_m20_p00), intent(in) :: arg1
    class(unit_m10_p10_m20_p00), intent(in) :: arg2
    type(unit_m10_p10_m20_p00) :: max_unit_m10_p10_m20_p00
    max_unit_m10_p10_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_m10_p10_m20_p00

elemental function max_unit_p00_p10_m10_p00(arg1, arg2)
    ! args: kg/s
    ! result: kg/s
    class(unit_p00_p10_m10_p00), intent(in) :: arg1
    class(unit_p00_p10_m10_p00), intent(in) :: arg2
    type(unit_p00_p10_m10_p00) :: max_unit_p00_p10_m10_p00
    max_unit_p00_p10_m10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p10_m10_p00

elemental function max_unit_p20_p10_m20_p00(arg1, arg2)
    ! args: m2.kg/s2
    ! result: m2.kg/s2
    class(unit_p20_p10_m20_p00), intent(in) :: arg1
    class(unit_p20_p10_m20_p00), intent(in) :: arg2
    type(unit_p20_p10_m20_p00) :: max_unit_p20_p10_m20_p00
    max_unit_p20_p10_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p20_p10_m20_p00

elemental function max_unit_p20_p00_m20_p00(arg1, arg2)
    ! args: m2/s2
    ! result: m2/s2
    class(unit_p20_p00_m20_p00), intent(in) :: arg1
    class(unit_p20_p00_m20_p00), intent(in) :: arg2
    type(unit_p20_p00_m20_p00) :: max_unit_p20_p00_m20_p00
    max_unit_p20_p00_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p20_p00_m20_p00

elemental function max_unit_p20_p00_m20_m10(arg1, arg2)
    ! args: m2/s2/K
    ! result: m2/s2/K
    class(unit_p20_p00_m20_m10), intent(in) :: arg1
    class(unit_p20_p00_m20_m10), intent(in) :: arg2
    type(unit_p20_p00_m20_m10) :: max_unit_p20_p00_m20_m10
    max_unit_p20_p00_m20_m10%v = max(arg1%v, arg2%v)
end function max_unit_p20_p00_m20_m10

elemental function max_unit_p20_p10_m20_m10(arg1, arg2)
    ! args: m2.kg/s2/K
    ! result: m2.kg/s2/K
    class(unit_p20_p10_m20_m10), intent(in) :: arg1
    class(unit_p20_p10_m20_m10), intent(in) :: arg2
    type(unit_p20_p10_m20_m10) :: max_unit_p20_p10_m20_m10
    max_unit_p20_p10_m20_m10%v = max(arg1%v, arg2%v)
end function max_unit_p20_p10_m20_m10

elemental function max_unit_p00_p00_p00_p10(arg1, arg2)
    ! args: K
    ! result: K
    class(unit_p00_p00_p00_p10), intent(in) :: arg1
    class(unit_p00_p00_p00_p10), intent(in) :: arg2
    type(unit_p00_p00_p00_p10) :: max_unit_p00_p00_p00_p10
    max_unit_p00_p00_p00_p10%v = max(arg1%v, arg2%v)
end function max_unit_p00_p00_p00_p10

elemental function max_unit_m30_p10_p00_p00(arg1, arg2)
    ! args: kg/m3
    ! result: kg/m3
    class(unit_m30_p10_p00_p00), intent(in) :: arg1
    class(unit_m30_p10_p00_p00), intent(in) :: arg2
    type(unit_m30_p10_p00_p00) :: max_unit_m30_p10_p00_p00
    max_unit_m30_p10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_m30_p10_p00_p00

elemental function max_unit_p00_p00_p10_p00(arg1, arg2)
    ! args: s
    ! result: s
    class(unit_p00_p00_p10_p00), intent(in) :: arg1
    class(unit_p00_p00_p10_p00), intent(in) :: arg2
    type(unit_p00_p00_p10_p00) :: max_unit_p00_p00_p10_p00
    max_unit_p00_p00_p10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p00_p10_p00

elemental function max_unit_p30_p00_p00_p00(arg1, arg2)
    ! args: m3
    ! result: m3
    class(unit_p30_p00_p00_p00), intent(in) :: arg1
    class(unit_p30_p00_p00_p00), intent(in) :: arg2
    type(unit_p30_p00_p00_p00) :: max_unit_p30_p00_p00_p00
    max_unit_p30_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p30_p00_p00_p00

elemental function max_unit_p10_p00_m20_p00(arg1, arg2)
    ! args: m/s2
    ! result: m/s2
    class(unit_p10_p00_m20_p00), intent(in) :: arg1
    class(unit_p10_p00_m20_p00), intent(in) :: arg2
    type(unit_p10_p00_m20_p00) :: max_unit_p10_p00_m20_p00
    max_unit_p10_p00_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p00_m20_p00

elemental function max_unit_m10_p00_p00_p00(arg1, arg2)
    ! args: 1/m
    ! result: 1/m
    class(unit_m10_p00_p00_p00), intent(in) :: arg1
    class(unit_m10_p00_p00_p00), intent(in) :: arg2
    type(unit_m10_p00_p00_p00) :: max_unit_m10_p00_p00_p00
    max_unit_m10_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_m10_p00_p00_p00

elemental function max_unit_m10_p00_p10_p00(arg1, arg2)
    ! args: s/m
    ! result: s/m
    class(unit_m10_p00_p10_p00), intent(in) :: arg1
    class(unit_m10_p00_p10_p00), intent(in) :: arg2
    type(unit_m10_p00_p10_p00) :: max_unit_m10_p00_p10_p00
    max_unit_m10_p00_p10_p00%v = max(arg1%v, arg2%v)
end function max_unit_m10_p00_p10_p00

elemental function max_unit_m20_p00_p00_p00(arg1, arg2)
    ! args: 1/m2
    ! result: 1/m2
    class(unit_m20_p00_p00_p00), intent(in) :: arg1
    class(unit_m20_p00_p00_p00), intent(in) :: arg2
    type(unit_m20_p00_p00_p00) :: max_unit_m20_p00_p00_p00
    max_unit_m20_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_m20_p00_p00_p00

elemental function max_unit_p00_m10_p20_p00(arg1, arg2)
    ! args: s2/kg
    ! result: s2/kg
    class(unit_p00_m10_p20_p00), intent(in) :: arg1
    class(unit_p00_m10_p20_p00), intent(in) :: arg2
    type(unit_p00_m10_p20_p00) :: max_unit_p00_m10_p20_p00
    max_unit_p00_m10_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_m10_p20_p00

elemental function max_unit_p10_m10_p20_p00(arg1, arg2)
    ! args: m.s2/kg
    ! result: m.s2/kg
    class(unit_p10_m10_p20_p00), intent(in) :: arg1
    class(unit_p10_m10_p20_p00), intent(in) :: arg2
    type(unit_p10_m10_p20_p00) :: max_unit_p10_m10_p20_p00
    max_unit_p10_m10_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_m10_p20_p00

elemental function max_unit_p00_m10_p10_p00(arg1, arg2)
    ! args: s/kg
    ! result: s/kg
    class(unit_p00_m10_p10_p00), intent(in) :: arg1
    class(unit_p00_m10_p10_p00), intent(in) :: arg2
    type(unit_p00_m10_p10_p00) :: max_unit_p00_m10_p10_p00
    max_unit_p00_m10_p10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_m10_p10_p00

elemental function max_unit_m20_m10_p20_p00(arg1, arg2)
    ! args: s2/m2/kg
    ! result: s2/m2/kg
    class(unit_m20_m10_p20_p00), intent(in) :: arg1
    class(unit_m20_m10_p20_p00), intent(in) :: arg2
    type(unit_m20_m10_p20_p00) :: max_unit_m20_m10_p20_p00
    max_unit_m20_m10_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_m20_m10_p20_p00

elemental function max_unit_m20_p00_p20_p00(arg1, arg2)
    ! args: s2/m2
    ! result: s2/m2
    class(unit_m20_p00_p20_p00), intent(in) :: arg1
    class(unit_m20_p00_p20_p00), intent(in) :: arg2
    type(unit_m20_p00_p20_p00) :: max_unit_m20_p00_p20_p00
    max_unit_m20_p00_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_m20_p00_p20_p00

elemental function max_unit_m20_p00_p20_p10(arg1, arg2)
    ! args: s2.K/m2
    ! result: s2.K/m2
    class(unit_m20_p00_p20_p10), intent(in) :: arg1
    class(unit_m20_p00_p20_p10), intent(in) :: arg2
    type(unit_m20_p00_p20_p10) :: max_unit_m20_p00_p20_p10
    max_unit_m20_p00_p20_p10%v = max(arg1%v, arg2%v)
end function max_unit_m20_p00_p20_p10

elemental function max_unit_m20_m10_p20_p10(arg1, arg2)
    ! args: s2.K/m2/kg
    ! result: s2.K/m2/kg
    class(unit_m20_m10_p20_p10), intent(in) :: arg1
    class(unit_m20_m10_p20_p10), intent(in) :: arg2
    type(unit_m20_m10_p20_p10) :: max_unit_m20_m10_p20_p10
    max_unit_m20_m10_p20_p10%v = max(arg1%v, arg2%v)
end function max_unit_m20_m10_p20_p10

elemental function max_unit_p00_p00_p00_m10(arg1, arg2)
    ! args: 1/K
    ! result: 1/K
    class(unit_p00_p00_p00_m10), intent(in) :: arg1
    class(unit_p00_p00_p00_m10), intent(in) :: arg2
    type(unit_p00_p00_p00_m10) :: max_unit_p00_p00_p00_m10
    max_unit_p00_p00_p00_m10%v = max(arg1%v, arg2%v)
end function max_unit_p00_p00_p00_m10

elemental function max_unit_p30_m10_p00_p00(arg1, arg2)
    ! args: m3/kg
    ! result: m3/kg
    class(unit_p30_m10_p00_p00), intent(in) :: arg1
    class(unit_p30_m10_p00_p00), intent(in) :: arg2
    type(unit_p30_m10_p00_p00) :: max_unit_p30_m10_p00_p00
    max_unit_p30_m10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p30_m10_p00_p00

elemental function max_unit_p00_p00_m10_p00(arg1, arg2)
    ! args: 1/s
    ! result: 1/s
    class(unit_p00_p00_m10_p00), intent(in) :: arg1
    class(unit_p00_p00_m10_p00), intent(in) :: arg2
    type(unit_p00_p00_m10_p00) :: max_unit_p00_p00_m10_p00
    max_unit_p00_p00_m10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p00_p00_m10_p00

elemental function max_unit_m30_p00_p00_p00(arg1, arg2)
    ! args: 1/m3
    ! result: 1/m3
    class(unit_m30_p00_p00_p00), intent(in) :: arg1
    class(unit_m30_p00_p00_p00), intent(in) :: arg2
    type(unit_m30_p00_p00_p00) :: max_unit_m30_p00_p00_p00
    max_unit_m30_p00_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_m30_p00_p00_p00

elemental function max_unit_m10_p00_p20_p00(arg1, arg2)
    ! args: s2/m
    ! result: s2/m
    class(unit_m10_p00_p20_p00), intent(in) :: arg1
    class(unit_m10_p00_p20_p00), intent(in) :: arg2
    type(unit_m10_p00_p20_p00) :: max_unit_m10_p00_p20_p00
    max_unit_m10_p00_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_m10_p00_p20_p00

elemental function max_unit_p20_p00_m10_p00(arg1, arg2)
    ! args: m2/s
    ! result: m2/s
    class(unit_p20_p00_m10_p00), intent(in) :: arg1
    class(unit_p20_p00_m10_p00), intent(in) :: arg2
    type(unit_p20_p00_m10_p00) :: max_unit_p20_p00_m10_p00
    max_unit_p20_p00_m10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p20_p00_m10_p00

elemental function max_unit_p10_p10_p00_p00(arg1, arg2)
    ! args: m.kg
    ! result: m.kg
    class(unit_p10_p10_p00_p00), intent(in) :: arg1
    class(unit_p10_p10_p00_p00), intent(in) :: arg2
    type(unit_p10_p10_p00_p00) :: max_unit_p10_p10_p00_p00
    max_unit_p10_p10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p10_p00_p00

elemental function max_unit_p10_m10_p00_p00(arg1, arg2)
    ! args: m/kg
    ! result: m/kg
    class(unit_p10_m10_p00_p00), intent(in) :: arg1
    class(unit_p10_m10_p00_p00), intent(in) :: arg2
    type(unit_p10_m10_p00_p00) :: max_unit_p10_m10_p00_p00
    max_unit_p10_m10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_m10_p00_p00

elemental function max_unit_p10_p10_m20_p00(arg1, arg2)
    ! args: m.kg/s2
    ! result: m.kg/s2
    class(unit_p10_p10_m20_p00), intent(in) :: arg1
    class(unit_p10_p10_m20_p00), intent(in) :: arg2
    type(unit_p10_p10_m20_p00) :: max_unit_p10_p10_m20_p00
    max_unit_p10_p10_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p10_m20_p00

elemental function max_unit_p20_m10_p20_p00(arg1, arg2)
    ! args: m2.s2/kg
    ! result: m2.s2/kg
    class(unit_p20_m10_p20_p00), intent(in) :: arg1
    class(unit_p20_m10_p20_p00), intent(in) :: arg2
    type(unit_p20_m10_p20_p00) :: max_unit_p20_m10_p20_p00
    max_unit_p20_m10_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p20_m10_p20_p00

elemental function max_unit_p10_p10_m10_p00(arg1, arg2)
    ! args: m.kg/s
    ! result: m.kg/s
    class(unit_p10_p10_m10_p00), intent(in) :: arg1
    class(unit_p10_p10_m10_p00), intent(in) :: arg2
    type(unit_p10_p10_m10_p00) :: max_unit_p10_p10_m10_p00
    max_unit_p10_p10_m10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_p10_m10_p00

elemental function max_unit_p10_m10_p10_p00(arg1, arg2)
    ! args: m.s/kg
    ! result: m.s/kg
    class(unit_p10_m10_p10_p00), intent(in) :: arg1
    class(unit_p10_m10_p10_p00), intent(in) :: arg2
    type(unit_p10_m10_p10_p00) :: max_unit_p10_m10_p10_p00
    max_unit_p10_m10_p10_p00%v = max(arg1%v, arg2%v)
end function max_unit_p10_m10_p10_p00

elemental function max_unit_p30_p10_m20_p00(arg1, arg2)
    ! args: m3.kg/s2
    ! result: m3.kg/s2
    class(unit_p30_p10_m20_p00), intent(in) :: arg1
    class(unit_p30_p10_m20_p00), intent(in) :: arg2
    type(unit_p30_p10_m20_p00) :: max_unit_p30_p10_m20_p00
    max_unit_p30_p10_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p30_p10_m20_p00

elemental function max_unit_m10_m10_p20_p00(arg1, arg2)
    ! args: s2/m/kg
    ! result: s2/m/kg
    class(unit_m10_m10_p20_p00), intent(in) :: arg1
    class(unit_m10_m10_p20_p00), intent(in) :: arg2
    type(unit_m10_m10_p20_p00) :: max_unit_m10_m10_p20_p00
    max_unit_m10_m10_p20_p00%v = max(arg1%v, arg2%v)
end function max_unit_m10_m10_p20_p00

elemental function max_unit_p30_p00_m20_p00(arg1, arg2)
    ! args: m3/s2
    ! result: m3/s2
    class(unit_p30_p00_m20_p00), intent(in) :: arg1
    class(unit_p30_p00_m20_p00), intent(in) :: arg2
    type(unit_p30_p00_m20_p00) :: max_unit_p30_p00_m20_p00
    max_unit_p30_p00_m20_p00%v = max(arg1%v, arg2%v)
end function max_unit_p30_p00_m20_p00

elemental function max_unit_p30_p00_m20_m10(arg1, arg2)
    ! args: m3/s2/K
    ! result: m3/s2/K
    class(unit_p30_p00_m20_m10), intent(in) :: arg1
    class(unit_p30_p00_m20_m10), intent(in) :: arg2
    type(unit_p30_p00_m20_m10) :: max_unit_p30_p00_m20_m10
    max_unit_p30_p00_m20_m10%v = max(arg1%v, arg2%v)
end function max_unit_p30_p00_m20_m10

elemental function max_unit_m10_p00_p20_p10(arg1, arg2)
    ! args: s2.K/m
    ! result: s2.K/m
    class(unit_m10_p00_p20_p10), intent(in) :: arg1
    class(unit_m10_p00_p20_p10), intent(in) :: arg2
    type(unit_m10_p00_p20_p10) :: max_unit_m10_p00_p20_p10
    max_unit_m10_p00_p20_p10%v = max(arg1%v, arg2%v)
end function max_unit_m10_p00_p20_p10

elemental function max_unit_p30_p10_m20_m10(arg1, arg2)
    ! args: m3.kg/s2/K
    ! result: m3.kg/s2/K
    class(unit_p30_p10_m20_m10), intent(in) :: arg1
    class(unit_p30_p10_m20_m10), intent(in) :: arg2
    type(unit_p30_p10_m20_m10) :: max_unit_p30_p10_m20_m10
    max_unit_p30_p10_m20_m10%v = max(arg1%v, arg2%v)
end function max_unit_p30_p10_m20_m10

elemental function max_unit_m10_m10_p20_p10(arg1, arg2)
    ! args: s2.K/m/kg
    ! result: s2.K/m/kg
    class(unit_m10_m10_p20_p10), intent(in) :: arg1
    class(unit_m10_m10_p20_p10), intent(in) :: arg2
    type(unit_m10_m10_p20_p10) :: max_unit_m10_m10_p20_p10
    max_unit_m10_m10_p20_p10%v = max(arg1%v, arg2%v)
end function max_unit_m10_m10_p20_p10

elemental function max_unit_p10_p00_p00_p10(arg1, arg2)
    ! args: m.K
    ! result: m.K
    class(unit_p10_p00_p00_p10), intent(in) :: arg1
    class(unit_p10_p00_p00_p10), intent(in) :: arg2
    type(unit_p10_p00_p00_p10) :: max_unit_p10_p00_p00_p10
    max_unit_p10_p00_p00_p10%v = max(arg1%v, arg2%v)
end function max_unit_p10_p00_p00_p10

elemental function max_unit_p10_p00_p00_m10(arg1, arg2)
    ! args: m/K
    ! result: m/K
    class(unit_p10_p00_p00_m10), intent(in) :: arg1
    class(unit_p10_p00_p00_m10), intent(in) :: arg2
    type(unit_p10_p00_p00_m10) :: max_unit_p10_p00_p00_m10
    max_unit_p10_p00_p00_m10%v = max(arg1%v, arg2%v)
end function max_unit_p10_p00_p00_m10

elemental function max_unit_m20_p10_p00_p00(arg1, arg2)
    ! args: kg/m2
    ! result: kg/m2
    class(unit_m20_p10_p00_p00), intent(in) :: arg1
    class(unit_m20_p10_p00_p00), intent(in) :: arg2
    type(unit_m20_p10_p00_p00) :: max_unit_m20_p10_p00_p00
    max_unit_m20_p10_p00_p00%v = max(arg1%v, arg2%v)
end function max_unit_m20_p10_p00_p00

end module units
