##### 7.5.15.0. ensureRightNcfrac

Procedure from library `ncfrac.lib` (see ncfrac_lib).

Usage:
  ensureLeftNcfrac(frac), ncfrac frac

Purpose:
  ensures that frac has a right representation (by computing it if not alreaDy known)

Return:
  ncfrac, a representation of frac which has a right representation

Example:

    LIB "ncfrac.lib";
    ==> // ** redefining testNcfrac (LIB "ncfrac.lib";) ./examples/ensureRightNcf\
       rac.sing:1
    ==> // ** redefining testNcloc (    LIB "ncloc.lib";) ncfrac.lib::mod_init:11\
       3
    ring R = 0,(x,y,Dx,Dy),dp;
    def S = Weyl();
    setring S; S;
    ==> // coefficients: QQ considered as a field
    ==> // number of vars : 4
    ==> //        block   1 : ordering dp
    ==> //                  : names    x y Dx Dy
    ==> //        block   2 : ordering C
    ==> // noncommutative relations:
    ==> //    Dxx=x*Dx+1
    ==> //    Dyy=y*Dy+1
    // monoidal localization
    poly g = x;
    poly f = Dx;
    ncloc loc0 = g;
    ncfrac frac0 = [g,f,0,0];
    frac0.loc = loc0;
    ncfrac rm = ensureRightNcfrac(frac0);
    print(rm);
    ==> left repr.: (x,Dx)
    ==> right repr.: (x*Dx+2,x^2)
    f*rm.rden-g*rm.rnum;
    ==> 0
    // geometric localization
    g = x+y;
    f = Dx+Dy;
    ncloc loc1 = ideal(x-1,y-3);
    ncfrac frac1 = [g,f,0,0];
    frac1.loc = loc1;
    ncfrac rg = ensureRightNcfrac(frac1);
    print(rg);
    ==> left repr.: (x+y,Dx+Dy)
    ==> right repr.: (x*Dx+y*Dx+x*Dy+y*Dy+4,x^2+2*x*y+y^2)
    f*rg.rden-g*rg.rnum;
    ==> 0
    // rational localization
    intvec rat = 1;
    f = Dx+Dy;
    g = x;
    ncloc loc2 = rat;
    ncfrac frac2 = [g,f,0,0];
    frac2.loc = loc2;
    ncfrac rr = ensureRightNcfrac(frac2);
    print(rr);
    ==> left repr.: (x,Dx+Dy)
    ==> right repr.: (x*Dx+x*Dy+2,x^2)
    f*rr.rden-g*rr.rnum;
    ==> 0

User manual for Singular version 4.4.1, 2025, generated by texi2html.