a vector function cache.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(fx), | private, | dimension(:), allocatable | :: | c |
the cache of |
||
| integer, | private | :: | chunk_size | = | 100 |
for resizing vectors in the unique function |
Initialize the cache. Must be called first before use.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(function_cache), | intent(inout) | :: | me | |||
| integer, | intent(in) | :: | isize |
the size of the hash table |
||
| integer, | intent(in), | optional | :: | chunk_size |
chunk size to speed up reallocation
of arrays. A good value is a guess for
the actual number of elements of |
Check if the x vector is in the cache, if so return f.
Note that only some of the elements may be present, so it will return
the ones there are there, and indicate which ones were found.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(function_cache), | intent(inout) | :: | me | |||
| integer(kind=ip), | intent(in), | dimension(:) | :: | x |
independant variable vector |
|
| integer(kind=ip), | intent(out) | :: | i |
index in the hash table |
||
| integer(kind=ip), | intent(out), | dimension(:), allocatable | :: | f |
|
|
| logical, | intent(out) | :: | found |
if |
Put a value into the cache.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(function_cache), | intent(inout) | :: | me | |||
| integer(kind=ip), | intent(in) | :: | i |
index in the hash table |
||
| integer(kind=ip), | intent(in), | dimension(:) | :: | x |
independant variable vector |
|
| integer(kind=ip), | intent(in), | dimension(:) | :: | f |
function |
Destroy a cache.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(function_cache), | intent(out) | :: | me |
type,public :: function_cache !! a vector function cache. private type(fx),dimension(:),allocatable :: c !! the cache of `f(x)` integer :: chunk_size = 100 !! for resizing vectors !! in the [[unique]] function contains private procedure,public :: initialize => initialize_cache procedure,public :: get => get_from_cache procedure,public :: put => put_in_cache procedure,public :: destroy => destroy_cache end type function_cache