# Singular

##### 7.5.21.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";) ==> // ** redefining testNcloc ( LIB "ncloc.lib";) ring R = 0,(x,y,Dx,Dy),dp; def S = Weyl(); setring S; S; ==> // coefficients: QQ ==> // 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 ```