Skip to content

Commit fa05662

Browse files
improve HMatrixBuilder interface
1 parent f5f0688 commit fa05662

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ All notable changes to this project will be documented in this file.
3333
### Changed
3434

3535
- Make std::execution optional via `HTOOL_WITH_STD_EXECUTION_API` macro to avoid linking with TBB. Default to false.
36+
- Improve `HMatrixBuilder` interface.
3637

3738
### Fixed
3839

40+
- Fix uninitialized values in `Partitioning_N`.
41+
3942
## [1.0.2] - 2026-02-14
4043

4144
### Fixed

include/htool/hmatrix/utility.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ class HMatrixBuilder {
1414
Cluster<CoordinatesPrecision> target_cluster;
1515
std::unique_ptr<Cluster<CoordinatesPrecision>> source_cluster_ptr = nullptr; // use an optional source cluster
1616

17-
HMatrixBuilder(int target_number_of_points, int target_spatial_dimension, const CoordinatesPrecision *target_coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *target_cluster_tree_builder, int source_number_of_points, int source_spatial_dimension, const CoordinatesPrecision *source_coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *source_cluster_tree_builder) : target_cluster(target_cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(target_number_of_points, target_spatial_dimension, target_coordinates, std::pow(2, target_spatial_dimension), std::pow(2, source_spatial_dimension)) : target_cluster_tree_builder->create_cluster_tree(target_number_of_points, target_spatial_dimension, target_coordinates, 2, 2)), source_cluster_ptr(std::make_unique<Cluster<CoordinatesPrecision>>(source_cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(source_number_of_points, source_spatial_dimension, source_coordinates, std::pow(2, target_spatial_dimension), std::pow(2, source_spatial_dimension)) : source_cluster_tree_builder->create_cluster_tree(source_number_of_points, source_spatial_dimension, source_coordinates, std::pow(2, target_spatial_dimension), std::pow(2, source_spatial_dimension)))) {
17+
HMatrixBuilder(int target_number_of_points, int target_spatial_dimension, const CoordinatesPrecision *target_coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *target_cluster_tree_builder, int target_number_of_children, int target_number_of_partitions, int source_number_of_points, int source_spatial_dimension, const CoordinatesPrecision *source_coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *source_cluster_tree_builder, int source_number_of_children, int source_number_of_partitions) : target_cluster(target_cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(target_number_of_points, target_spatial_dimension, target_coordinates, target_number_of_children, target_number_of_partitions) : target_cluster_tree_builder->create_cluster_tree(target_number_of_points, target_spatial_dimension, target_coordinates, target_number_of_children, target_number_of_partitions)), source_cluster_ptr(std::make_unique<Cluster<CoordinatesPrecision>>(source_cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(source_number_of_points, source_spatial_dimension, source_coordinates, source_number_of_children, source_number_of_partitions) : source_cluster_tree_builder->create_cluster_tree(source_number_of_points, source_spatial_dimension, source_coordinates, source_number_of_children, source_number_of_partitions))) {
1818
}
1919

20-
HMatrixBuilder(int target_number_of_points, int target_spatial_dimension, const CoordinatesPrecision *target_coordinates, int source_number_of_points, int source_spatial_dimension, const CoordinatesPrecision *source_coordinates) : HMatrixBuilder(target_number_of_points, target_spatial_dimension, target_coordinates, nullptr, source_number_of_points, source_spatial_dimension, source_coordinates, nullptr) {
20+
HMatrixBuilder(int target_number_of_points, int target_spatial_dimension, const CoordinatesPrecision *target_coordinates, int source_number_of_points, int source_spatial_dimension, const CoordinatesPrecision *source_coordinates) : HMatrixBuilder(target_number_of_points, target_spatial_dimension, target_coordinates, nullptr, 2, 2, source_number_of_points, source_spatial_dimension, source_coordinates, nullptr, 2, 2) {
2121
}
2222

23-
HMatrixBuilder(int number_of_points, int spatial_dimension, const CoordinatesPrecision *coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *cluster_tree_builder = nullptr) : target_cluster(cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(number_of_points, spatial_dimension, coordinates, std::pow(2, spatial_dimension), std::pow(2, spatial_dimension)) : cluster_tree_builder->create_cluster_tree(number_of_points, spatial_dimension, coordinates, std::pow(2, spatial_dimension), std::pow(2, spatial_dimension))) {
23+
HMatrixBuilder(int number_of_points, int spatial_dimension, const CoordinatesPrecision *coordinates, const ClusterTreeBuilder<CoordinatesPrecision> *cluster_tree_builder = nullptr, int number_of_children = 2, int number_of_partitions = 2) : target_cluster(cluster_tree_builder == nullptr ? ClusterTreeBuilder<CoordinatesPrecision>().create_cluster_tree(number_of_points, spatial_dimension, coordinates, number_of_children, number_of_partitions) : cluster_tree_builder->create_cluster_tree(number_of_points, spatial_dimension, coordinates, number_of_children, number_of_partitions)) {
2424
}
2525

2626
template <typename ExecutionPolicy>

0 commit comments

Comments
 (0)