is there functionality like TensorOperations that supports functions and named lookups?

I have an array of deals. Each specifies a curve, and needs to be valued over many simulated iterations of the curve. I’d like to write it as:

`@tensor result[d,sim] := value.( deals[d], curves[ deals[d].curve, sim, :] )`

where the components are (roughly)

```
struct deal
curve::CurveName
tenor::Int64
end
curves = rand( numCurves, numSims, numTenors ) |> NamedArray
setnames!(curves, CurveNames )
value( d::deal, curve::Array{Int64} ) = curve[d.tenor]
```

DNF
August 2, 2022, 5:18am
#2
You should check out Tullio.jl: GitHub - mcabbott/Tullio.jl: ⅀

Tullio is highly performant, but it looks like you have placed your curve data along the 3rd dimension of your array, which may harm performance, since Julia `Array`

s are column-major, unlike e.g. numpy arrays.

(Btw, type names are, by convention, Capitalized)

1 Like

Tullio looks really cool. Thank you. I’ll probably have some questions on it tomorrow.

Thanks re. Capitalization.

Thanks re. dimension order. I notice with `X = ones(10000,10000)`

`@tullio Y[i] := sum( X[:,i] )`

is much faster than

`@tullio Y[i] := sum( X[i,:] )`