ggml_solve_tri function

  1. @Native<Pointer<ggml_tensor> Function(Pointer<ggml_context>, Pointer<ggml_tensor>, Pointer<ggml_tensor>, Bool, Bool, Bool)>(ffi.Pointer<ggml_context>, ffi.Pointer<ggml_tensor>, ffi.Pointer<ggml_tensor>, ffi.Bool, ffi.Bool, ffi.Bool)>()
Pointer<ggml_tensor> ggml_solve_tri(
  1. Pointer<ggml_context> ctx,
  2. Pointer<ggml_tensor> a,
  3. Pointer<ggml_tensor> b,
  4. bool left,
  5. bool lower,
  6. bool uni,
)

Solves a specific equation of the form Ax=B, where A is a triangular matrix without zeroes on the diagonal (i.e. invertible). B can have any number of columns, but must have the same number of rows as A If A is n, n and B is n, m, then the result will be n, m as well Has O(n^3) complexity (unlike most matrix ops out there), so use on cases where n > 100 sparingly, pre-chunk if necessary.

If left = false, solves xA=B instead If lower = false, assumes upper triangular instead If uni = true, assumes diagonal of A to be all ones (will override actual values)

TODO: currently only lower, right, non-unitriangular variant is implemented

Implementation

@ffi.Native<
  ffi.Pointer<ggml_tensor> Function(
    ffi.Pointer<ggml_context>,
    ffi.Pointer<ggml_tensor>,
    ffi.Pointer<ggml_tensor>,
    ffi.Bool,
    ffi.Bool,
    ffi.Bool,
  )
>()
external ffi.Pointer<ggml_tensor> ggml_solve_tri(
  ffi.Pointer<ggml_context> ctx,
  ffi.Pointer<ggml_tensor> a,
  ffi.Pointer<ggml_tensor> b,
  bool left,
  bool lower,
  bool uni,
);