# tree_d_3d.kernels.log_quadtree_moments.log_quadtree_moments_metal

*module*

The Metal version (Apple-silicon GPU, float32) of the ``log_quadtree_moments`` kernel.

``log_quadtree_moments_pyccel.py`` next to this file is the CPU version with the same
arguments. One thread per node; only the first ``node_count`` rows of the outputs are
written. See :mod:`tree_d_3d.kernels._metal`.

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/log_quadtree_moments/log_quadtree_moments_metal.py#L1-L1)

## tree_d_3d.kernels.log_quadtree_moments.log_quadtree_moments_metal.log_quadtree_moments

*function*

```python
def log_quadtree_moments(pos: Array, charge: Array, perm: Array, node_count: int, node_center: Array, node_start: Array, node_end: Array, node_qabs: Array, moment_re: Array, moment_im: Array) -> None
```

Complex multipole moments a_0 ... a_p of every node.

[View source](https://github.com/max-models/tree-d-3d/blob/devel/src/tree_d_3d/kernels/log_quadtree_moments/log_quadtree_moments_metal.py#L53-L77)
