Class: NMatrixLU

### Home Classes Methods

### In Files

- src/na_linalg.c

### Parent

Object

### Methods

- #solve

### Files

- ChangeLog
- MANIFEST
- SPEC.en.txt
- Makefile
- depend

### Class/Module Index

Quicksearch

- FFTW
- NArray
- NArrayScalar
- NMath
- NMatrix
- NMatrixLU
- NVector

No matching classes.

# NMatrixLU

### Public Instance Methods

solve(arg) → result click to toggle source

Solve with the result of LU factorization. arg should be NMatrix or NVector instance. Returns an instance of same class with arg.

    static VALUE
    na_lu_solve(VALUE self, volatile VALUE other)
    {
      int  n, ndim;
      int *shape;
      struct NARRAY *a1, *a2, *l, *p;
      VALUE pv, obj, klass;
      volatile VALUE lu;

      klass = CLASS_OF(other);
      if (klass==cNVector)
        other = na_newdim_ref(1,(VALUE*)na_funcset[NA_ROBJ].zero,other);
      else if (klass!=cNMatrix)
        rb_raise(rb_eTypeError,"neither NMatrix or NVector");

      lu = rb_ivar_get(self, id_lu);
      pv = rb_ivar_get(self, id_pivot);

      GetNArray(lu,l);

      other = na_upcast_object(other,l->type);
      GetNArray(other,a1);

      lu = na_upcast_type(lu,a1->type);
      GetNArray(lu,l);
      GetNArray(pv,p);

      n = l->shape[0];
      if (n != a1->shape[1])
        rb_raise(rb_eTypeError,"size mismatch (%i!=%i)",n,a1->shape[1]);

      ndim  = NA_MAX(l->rank, a1->rank);
      shape = ALLOCA_N(int, ndim);

      shape[0] = a1->shape[0];
      na_shape_max2( ndim-1, shape+1, a1->rank-1, a1->shape+1,
                     l->rank-1, l->shape+1 );
      obj = na_make_object( a1->type, ndim, shape, klass );

      GetNArray(obj,a2);

      na_exec_linalg( a2, a1, p, 2, 2, 1, na_lu_pivot_func );
      na_exec_linalg( a2, a2, l, 2, 2, 2, na_lu_solve_func );

      if (klass==cNVector) {
        shape = ALLOC_N(int, ndim-1);
        memcpy(shape,a2->shape+1,sizeof(int)*(ndim-1));
        xfree(a2->shape);
        a2->shape = shape;
        --(a2->rank);
      }
      return obj;
    }

[Validate]

Generated with the Darkfish Rdoc Generator 2.