ply_fpt_init Subroutine

public subroutine ply_fpt_init(n, params, trafo, blocksize, approx_terms, striplen, subblockingWidth)


integer, intent(in) :: n
type(ply_trafo_params_type), intent(inout) :: params
integer, intent(in) :: trafo
integer, intent(in), optional :: blocksize

Smallest block that is approximated by approx_terms coefficients.

Please note, that this has to be larger than 2*approx_terms to result in a reduced number of operations. Default is 64.

integer, intent(in), optional :: approx_terms

Number of approximation terms used to compute off-diagonal products.

Defaults to 18, which is the suggested accuracy for double precision.

integer, intent(in) :: striplen

Length to use in vectorization, this is the number of independent matrix multiplications that are to be done simultaneously.

integer, intent(in), optional :: subblockingWidth

The width of the subblocks used during the unrolled base exchange to ensure a better cache usage.


proc~~ply_fpt_init~~CallsGraph proc~ply_fpt_init ply_fpt_init proc~ply_l ply_l proc~ply_fpt_init->proc~ply_l proc~ply_m_int ply_m_int proc~ply_fpt_init->proc~ply_m_int proc~ply_l_int ply_l_int proc~ply_fpt_init->proc~ply_l_int proc~ply_m ply_m proc~ply_fpt_init->proc~ply_m proc~ply_lambda ply_lambda proc~ply_l->proc~ply_lambda proc~ply_m_int->proc~ply_lambda proc~ply_l_int->proc~ply_l proc~ply_l_int->proc~ply_lambda proc~ply_m->proc~ply_lambda

Called by

proc~~ply_fpt_init~~CalledByGraph proc~ply_fpt_init ply_fpt_init proc~ply_init_legfpt ply_init_legFpt proc~ply_init_legfpt->proc~ply_fpt_init proc~ply_poly_project_fillbody ply_poly_project_fillbody proc~ply_poly_project_fillbody->proc~ply_init_legfpt proc~sdr_proto2treelm sdr_proto2treelm proc~sdr_proto2treelm->proc~ply_poly_project_fillbody proc~ply_fill_project_list ply_fill_project_list proc~ply_fill_project_list->proc~ply_poly_project_fillbody program~seeder seeder program~seeder->proc~sdr_proto2treelm



integer, private :: r
integer, private :: l
integer, private :: k
integer, private :: s
integer, private :: h
integer, private :: i
integer, private :: j
integer, private :: m
integer, private :: diagonals
integer, private :: blockdiagonals
integer, private :: remainder
integer, private :: diag_off
integer, private :: block_off
integer, private :: nRows
integer, private :: ub_row
integer, private :: row_rem
integer, private :: rowsize
real(kind=rk), private, allocatable:: den(:)
real(kind=rk), private, allocatable:: t(:)
real(kind=rk), private :: x
type(ply_submatrix_type), private, allocatable:: sub(:)
type(ply_sub_vec), private, allocatable:: u(:,:)