program demo_anyscalar_to_real128
use, intrinsic :: iso_fortran_env, only : &
& i8=>int8, i16=>int16, i32=>int32, i64=>int64
use, intrinsic :: iso_fortran_env, only : &
& sp=>real32, dp=>real64, qp=>real128
implicit none
! call same function with many scalar input types
write(*,*)minall(&
& 2_i8, 7_i16, 8_i32, 9_i64, 2.0123123_sp, 3.0123_dp, 5.0_qp)
write(*,*)minall(&
& 5.0_qp, 3.0123_dp, 2.0123123_sp, 9_i64, 8_i32, 7_i16, 2_i8)
contains
function minall(a,b,c,d,e,f,g) result (value)
use M_anything, only : x=>anyscalar_to_real128
class(*),intent(in) :: a,b,c,d,e,f,g
real(kind=qp) :: value
value=min( x(a),x(b),x(c),x(d),x(e),x(f),x(g) )
end function minall
end program demo_anyscalar_to_real128