# GroupFunctions.jl - Computing individual d-functions of the unitary group U(d)

**URL:** <https://discourse.julialang.org/t/groupfunctions-jl-computing-individual-d-functions-of-the-unitary-group-u-d/136828>\
**Category:** Package Announcements\
**Tags:** package, algebra\
**Created:** [April 22, 2026, 1:26pm UTC](https://discourse.julialang.org/t/groupfunctions-jl-computing-individual-d-functions-of-the-unitary-group-u-d/136828 "2026-04-22T13:26:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![damaro](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/damaro/32/17002_2.png) [@damaro](https://discourse.julialang.org/u/damaro)\
**Post date:** [April 22, 2026, 1:26pm UTC](https://discourse.julialang.org/t/groupfunctions-jl-computing-individual-d-functions-of-the-unitary-group-u-d/136828/1 "2026-04-22T13:26:54Z")

</div>

# GroupFunctions.jl

Hello everyone.

I would like to share a project I have been developing for more than five years: **GroupFunctions.jl** , a registered Julia package for symbolic and numerical computation of individual group functions; that is, entries of the irreps of the special unitary group SU(d) or U(d) too.

Group functions of the unitary group appear in several areas of physics, including nuclear physics, quantum computing, and quantum optics. These applications have been the primary motivation behind the development of the package. GroupFunctions.jl provides a native Julia framework for working with these objects in a way that is both mathematically expressive and practical for research workflows.

## Example

The package can be used to compute an SU(2) group function for spin 1:

```julia
julia> U = su2_block_symbolic(2,1);

julia> U
2×2 Matrix{SymEngine.Basic}:
 v_1_1 v_1_2
 v_2_1 v_2_2

julia> group_function([2,0], U)[1]
3×3 Matrix{SymEngine.Basic}:
             v_2_2^2 sqrt(2)*v_2_2*v_2_1 v_2_1^2
 sqrt(2)*v_1_2*v_2_2 v_1_1*v_2_2 + v_1_2*v_2_1 sqrt(2)*v_1_1*v_2_1
             v_1_2^2 sqrt(2)*v_1_1*v_1_2 v_1_1^2

```

A less trivial example is with the irrep `lambda = [2,0,0]` of SU3 (the output has some columns truncated)

```julia
julia> U = [GroupFunctions.SymEngine.symbols("u_$(i)_$(j)") for i in 1:3, j in 1:3];

julia> U
3×3 Matrix{SymEngine.Basic}:
 u_1_1 u_1_2 u_1_3
 u_2_1 u_2_2 u_2_3
 u_3_1 u_3_2 u_3_3

julia> group_function([2,0,0], U)[1]
6×6 Matrix{SymEngine.Basic}:
             u_3_3^2 sqrt(2)*u_3_2*u_3_3 sqrt(2)*u_3_1*u_3_3 u_3_2^2 sqrt(2)*u_3_1*u_3_2 u_3_1^2
 sqrt(2)*u_2_3*u_3_3 u_2_2*u_3_3 + u_2_3*u_3_2 u_2_1*u_3_3 + u_2_3*u_3_1 sqrt(2)*u_2_2*u_3_2 u_2_1*u_3_2 + u_2_2*u_3_1 sqrt(2)*u_2_1*u_3_1
 sqrt(2)*u_1_3*u_3_3 u_1_2*u_3_3 + u_1_3*u_3_2 u_1_1*u_3_3 + u_1_3*u_3_1 sqrt(2)*u_1_2*u_3_2 u_1_1*u_3_2 + u_1_2*u_3_1 sqrt(2)*u_1_1*u_3_1
             u_2_3^2 sqrt(2)*u_2_2*u_2_3 sqrt(2)*u_2_1*u_2_3 u_2_2^2 sqrt(2)*u_2_2*u_2_1 u_2_1^2
 sqrt(2)*u_2_3*u_1_3 u_2_2*u_1_3 + u_2_3*u_1_2 u_2_1*u_1_3 + u_2_3*u_1_1 sqrt(2)*u_2_2*u_1_2 u_2_1*u_1_2 + u_2_2*u_1_1 sqrt(2)*u_2_1*u_1_1
             u_1_3^2 sqrt(2)*u_1_2*u_1_3 sqrt(2)*u_1_1*u_1_3 u_1_2^2 sqrt(2)*u_1_1*u_1_2 u_1_1^2

```

Yet more interesting, consider computing a single d-function for the 330-dimensional SU(10) irrep `[2,1,0,0,0,0,0,0,0,0]`:

```julia
julia> states = basis_states([2,1,0,0,0,0,0,0,0,0]);

julia> group_function([2,1,0,0,0,0,0,0,0,0],states[1], states[3])
2*((1/2)*u_9_7*u_10_10^2 + (-1/2)*u_9_10*u_10_7*u_10_10)

```

## Features

- Symbolic and numerical computation of individual group functions
- Support for symbolic matrix inputs
- State labeling via Gelfand–Tsetlin patterns
- Computation of group characters
- Export utilities for Wolfram-compatible syntax

## Development Status

GroupFunctions.jl is under active development, with ongoing work focused on expanding documented applications and improving performance and usability. Current use cases are strongly motivated by quantum optics, particularly boson sampling.

Contributions and feedback are welcome, especially on interface design and notation. If you are using group functions or know of applications not covered in the documentation, please open an Issue in the repository. Your contribution will be clearly acknowledged. If your field or problem uses different notation or a name for d-functions, I will be more than happy to add it to the codebase.

## Installation

```julia
pkg> add GroupFunctions

```

## Repository

> **[GitHub - davidamaro/GroupFunctions.jl: Julia codebase to compute irreps of the unitary...](https://github.com/davidamaro/GroupFunctions.jl)**
>
> Julia codebase to compute irreps of the unitary group U(d)
