mprintf("\n")
mprintf("\n------------Parametri Y------------\n")
mprintf("\n      Created by Paolo Piazza      \n"); mprintf("\n")
mprintf("AVVISO: I numeri complessi sono forniti e da\n")
mprintf("fornire nel formato cartesiano A + j*B, con A parte \n")
mprintf("reale e B parte immaginaria. Usare, come nell´esempio,\n")
mprintf("(j) per indicare l´unità immaginaria.\n"); mprintf("\n")
j=%i;

funcprot(0)
function [yi_1] = ins_yi()
yi_1 = input("Yi: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yi_1 = input("Yi: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
            conferma = input("Scelta: ");
        case 3 then
            abort;
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
endfunction

function [yf_1] = ins_yf()
yf_1 = input("Yf: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yf_1 = input("Yf: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
            conferma = input("Scelta: ");
        case 3 then
            abort;
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
endfunction

function [yr_1] = ins_yr()
yr_1 = input("Yr: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yr_1 = input("Yr: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
            conferma = input("Scelta: ");
        case 3 then
            abort;
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
endfunction

function [yo_1] = ins_yo()
yo_1 = input("Yo: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yo_1 = input("Yo: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: uscita programma.\n")
            conferma = input("Scelta: ");
        case 3 then
            abort;
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
endfunction

funcprot(0)
function [varargout] = scelta_calcolo()
mprintf("\nScegliere cosa si vuole calcolare:\n")
mprintf(" 1: Yin\n")
mprintf(" 2: Yout\n")
mprintf(" 3: Ga\n")
mprintf(" 4: Gp\n")
mprintf(" 5: Gt\n")
mprintf(" 6: K\n")
mprintf(" 7: Terminazioni ottime\n")
mprintf(" 8: Reti di adattamento\n")
mprintf(" 9: Uscita  o reinserimento parametri")
mprintf("\n")

scelta = input("Scelta: ");
while scelta <> 9
while ((scelta < 1) & (scelta > 9))
    scelta = input("Scelta non valida. Riprovare: ")
end
select(scelta)
case 1 then //Yin
    yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    yl = 0.001*yl_1;
    Gl = real(yl); Bl = real(yl);
    yin = yi - (yr*yf/(yo+yl));
    format('v',6);
    mprintf("\nYin (mS) = "); disp(yin/0.001)
case 2 then //Yout
    ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    ys = 0.001*ys_1;
    Gs = real(ys); Bs = real(ys);
    yout = yo - (yr*yf/(yi+ys));
    format('v',6);
    mprintf("\nYout (mS) = "); disp(yout/0.001)
case 3 then //Ga
    ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    ys = 0.001*ys_1;
    Gs = real(ys); Bs=imag(ys);
    yout = yo - (yr*yf/(yi+ys));
    Ga = ((abs(yf))^2)*Gs/(real(((yo*ys)+(yo*yi)-(yr*yf))*conj(yi+ys)));
    format('v',6);
    mprintf("\nYout (mS) = "); disp(yout/0.001)
    mprintf("\nGa = "); disp(Ga)
case 4 then //Gp
    yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    yl = 0.001*yl_1;
    Gl = real(yl); Bl = real(yl);
    yin = yi - (yr*yf/(yo+yl)); Gin = real(yin);
    Gp = (abs(yf/(yo+yl)))^2*Gl/Gin;
    format('v',6);
    mprintf("\nYin (mS) = "); disp(yin/0.001)
    mprintf("\nGp = "); disp(Gp)
case 5 then //Gt
    ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            ys_1 = input("Inserire Ys = Gs + j*Bs (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    ys = 0.001*ys_1;
    Gs = real(ys); Bs=imag(ys);
    yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            yl_1 = input("Inserire Yl = Gl + j*Bl (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    yl = 0.001*yl_1;
    Gl = real(yl); Bl = real(yl);
    Gt = (4*Gs*Gl*(abs(yf))^2)/((abs((ys+yi)*(yo+yl)-(yr*yf)))^2);
    format('v',6);
    mprintf("\nGt = "); disp(Gt)
case 6 then //K
    Gs_1 = input("Inserire Gs (parte reale di Ys) in mS: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            Gs_1 = input("Inserire Gs (parte reale di Ys) in mS: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    Gs = 0.001*Gs_1;
    Gl_1 = input("Inserire Gl (parte reale di Yl) in mS: ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            Gl_1 = input("Inserire Gl (parte reale di Yl) in mS: ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    Gl = 0.001*Gl_1;
    K = (2*(Gi+Gs)*(Go+Gl))/(abs(yr*yf)+real(yr*yf));
    format('v',6);
    mprintf("\nK = "); disp(K)
case 7 then //Terminazioni ottime
    if ((C < 0) | (C > 1)) then
        mprintf("\nIl quadripolo è potenzialmente instabile\n");
        scelta_calcolo()
    end
    Bi = imag(yi); Bo = imag(yo);
    Gsopt = sqrt((2*Gi*Go-real(yr*yf))^2-(abs(yr*yf))^2)/(2*Go);
    Glopt = Gsopt*Go/Gi;
    Bsopt = (imag(yr*yf)/(2*Go))-Bi;
    Blopt = (imag(yr*yf)/(2*Gi))-Bo;
    ysopt = Gsopt+j*Bsopt;
    ylopt = Glopt+j*Blopt;
    Gtmax = 4*Gsopt*Glopt*(abs(yf))^2/(abs((ysopt+yi)*(yo+ylopt)-yr*yf))^2;
    format('v',6);
    mprintf("\nYsopt = Gsopt + j*Bsopt\n")
    mprintf("\nYlopt = Glopt + j*Blopt\n");
    mprintf("\nGsopt (mS) = "); disp(Gsopt/0.001)
    mprintf("\nBsopt (mS) = "); disp(Bsopt/0.001)
    mprintf("\nGlopt (mS) = "); disp(Glopt/0.001)
    mprintf("\nBlopt (mS) = "); disp(Blopt/0.001)
    mprintf("\nGtmax = "); disp(Gtmax)
case 8 then //Reti di adattamento
    y1_1 = input("Inserire Y1 = G1 + j*B1 (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            y1_1 = input("Inserire Y1 = G1 + j*B1 (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    y1 = 0.001*y1_1;
    y2_1 = input("Inserire Y2 = G2 + j*B2 (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            y2_1 = input("Inserire Y2 = G2 + j*B2 (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    y2 = 0.001*y2_1;
    f_1 = input("Inserire la frequenza di lavoro (in MHz): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            f_1 = input("Inserire la frequenza di lavoro (in MHz): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            scelta_calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    w = 2*%pi*f_1*(10^6);
    g1 = real(y1); g1i = 1/g1;
    g2 = real(y2); g2i = 1/g2;
    z1 = 1/y1; z2 = 1/y2;
    if (g1i < g2i) then
        caso = 1;
    elseif (g1i > g2i) then
        caso = 2;
    else
        caso = 3;
    end
    select(caso)
    case 1 then
        mprintf("\nTrasformazione in salita (da serie a parallelo)\n")
        rp = 1/g2;
        if (rp <= 1/g1) then
            mprintf("\nErrore: trasformazione non valida.\n")
            break
        end
        qs = sqrt(((1/g2)-real(z1))/real(z1));
        cs = 1/(w*real(z1)*qs);
        cp = cs*((qs)^2)/(1+qs^2);
        b2 = imag(y2);
        bx = b2 - w*cp;
        format('v',6);
        mprintf("\nRp (in Ω) = "); disp(rp)
        mprintf("\nCp (in pF) = "); disp(cp/(10^(-12)))
        if (bx < 0) then
            lx = -1/(w*bx);
            mprintf("\nLx (in nH) = "); disp(lx/(10^(-9)))
        elseif (bx > 0) then
            cx = bx/(w);
            mprintf("\nCx (in pF) = "); disp(cx/(10^(-12)))
        end
    case 2 then
        mprintf("\nTrasformazione in discesa (da parallelo a serie)\n")
        rs = 1/g2;
        if (rs >= 1/g1) then
            mprintf("\nErrore: trasformazione non valida.\n")
            break
        end
        qp = sqrt(((1/g1)-real(z2))/real(z2));
        cp = qp*g1/(w);
        cs = cp*((qp)^2)/(1+qp^2);
        x2 = imag(y2);
        xx = (1/(w*cs))-x2;
        format('v',6);
        mprintf("\nRs (in Ω) = "); disp(rs)
        mprintf("\nCs (in pF) = "); disp(cs/(10^(-12)))
        if (xx > 0) then
            lx = xx/(w);
            mprintf("\nLx (in nH) = "); disp(lx/(10^(-9)))
        elseif (xx < 0) then
            cx = -1/(w*xx);
            mprintf("\nCx (in pF) = "); disp(cx/(10^(-12)))
        end
    case 3 then
        mprintf("\nParte reale di Y1 e Y2 uguali.\n")
        break;
    end
else break;
end
    mprintf("\n")
    mprintf("Si vuole calcolare altro? Scegliere il numero corrispondente:\n")
    mprintf(" 1: Yin\n")
    mprintf(" 2: Yout\n")
    mprintf(" 3: Ga\n")
    mprintf(" 4: Gp\n")
    mprintf(" 5: Gt\n")
    mprintf(" 6: K\n")
    mprintf(" 7: Terminazioni ottime\n")
    mprintf(" 8: Reti di adattamento\n")
    mprintf(" 9: Uscita o reinserimento parametri")
    mprintf("\n")
    scelta = input("Scelta: ");
end
calcolo();
endfunction

function [varargout] = calcolo()
mprintf("\nDigitare:\n")
mprintf("1: se si vogliono inserire i parametri Y, oppure\n")
mprintf("2: se si vuole passare al calcolo delle reti di adattamento\n")
mprintf(" e qualsiasi altro numero per uscire dal programma.\n")
ins = input("Scelta: ");
select(ins)
case 1 then
    mprintf(" Inserire i valori dei parametri Y (in mS):\n"); mprintf("\n")
    mprintf("   Yi  Yr\n") 
    mprintf("   Yf  Yo\n") 
    mprintf("\n")
    yi_1 = ins_yi(); yi = 0.001*yi_1;
    yf_1 = ins_yf(); yf = 0.001*yf_1;
    yr_1 = ins_yr(); yr = 0.001*yr_1
    yo_1 = ins_yo(); yo = 0.001*yo_1;
    Gi = real(yi); Go = real(yo);
    C = abs(yr*yf)/(2*Gi*Go-real(yr*yf));
    mprintf("\nC = \n"); disp(C);
    scelta_calcolo();
case 2 then
        y1_1 = input("Inserire Y1 = G1 + j*B1 (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            y1_1 = input("Inserire Y1 = G1 + j*B1 (in mS): ");
            mprintf("Digitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    y1 = 0.001*y1_1;
    y2_1 = input("Inserire Y2 = G2 + j*B2 (in mS): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            y2_1 = input("Inserire Y2 = G2 + j*B2 (in mS): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    y2 = 0.001*y2_1;
    f_1 = input("Inserire la frequenza di lavoro (in MHz): ");
//Correzione del dato
    mprintf("\nDigitare una scelta:\n")
    mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
    conferma = input("Scelta: ");
    while conferma,
        select(conferma)
        case 1 then
            break;
        case 2 then
            f_1 = input("Inserire la frequenza di lavoro (in MHz): ");
            mprintf("\nDigitare una scelta:\n")
            mprintf("1: conferma dato, 2: reinserisci dato, 3: ritorno al menù di scelta.\n")
            conferma = input("Scelta: ");
        case 3 then
            calcolo();
        else
            conferma = input("Scelta: ");
        end
    end
//Fine script correzione dato
    w = 2*%pi*f_1*(10^6);
    g1 = real(y1); g1i = 1/g1;
    g2 = real(y2); g2i = 1/g2;
    z1 = 1/y1; z2 = 1/y2;
    if (g1i < g2i) then
        caso = 1;
    elseif (g1i > g2i) then
        caso = 2;
    else
        caso = 3;
    end
    select(caso)
    case 1 then
        mprintf("\nTrasformazione in salita (da serie a parallelo)\n")
        rp = 1/g2;
        if (rp <= 1/g1) then
            mprintf("\nErrore: trasformazione non valida.\n")
            break
        end
        qs = sqrt(((1/g2)-real(z1))/real(z1));
        cs = 1/(w*real(z1)*qs);
        cp = cs*((qs)^2)/(1+qs^2);
        b2 = imag(y2);
        bx = b2 - w*cp;
        x = -imag(z1)-(1/(w*cs));
        format('v',6);
        mprintf("\nRp (in Ω) = "); disp(rp)
        if (x > 0) then
            ltot = x/w;
            mprintf("\nReattanza positiva: induttanza.\n");
            mprintf("\nLtot (in nH) = "); disp(ltot/(10^(-9)));
        elseif (x < 0) then
            ctot = -1/(x*w);
            mprintf("\nReattanza negativa: capacità.\n");
            mprintf("\nCtot (in pF) = "); disp(ctot/(10^(-12)));
        else mprintf ("\nReattanza nulla.");
        end
        if (bx < 0) then
            lx = -1/(w*bx);
            mprintf("\nLx (in nH) = "); disp(lx/(10^(-9)))
        elseif (bx > 0) then
            cx = bx/(w);
            mprintf("\nCx (in pF) = "); disp(cx/(10^(-12)))
        end
    case 2 then
        mprintf("\nTrasformazione in discesa (da parallelo a serie)\n")
        rs = 1/g2;
        if (rs >= 1/g1) then
            mprintf("\nErrore: trasformazione non valida.\n")
            break
        end
        qp = sqrt(((1/g1)-real(z2))/real(z2));
        cp = qp*g1/(w);
        cs = cp*(1+qp^2)/(qp^2);
        x2 = imag(y2);
        xx = (1/(w*cs))-x2;
        b = -imag(y1)-(w*cp);
        format('v',6);
        mprintf("\nRs (in Ω) = "); disp(rs)
        if (b < 0) then
            ltot = -1/(b*w);
            mprintf("\nSuscettanza negativa: induttanza.\n");
            mprintf("\nLtot (in nH) = "); disp(ltot/(10^(-9)));
        elseif (b > 0) then
            ctot = b/w;
            mprintf("\nSuscettanza positiva: capacità.\n");
            mprintf("\nCtot (in pF) = "); disp(ctot/(10^(-12)));
        else mprintf ("\nSuscettanza nulla.");
        end
        if (xx > 0) then
            lx = xx/(w);
            mprintf("\nLx (in nH) = "); disp(lx/(10^(-9)))
        elseif (xx < 0) then
            cx = -1/(w*xx);
            mprintf("\nCx (in pF) = "); disp(cx/(10^(-12)))
        end
    case 3 then
        mprintf("\nParte reale di Y1 e Y2 uguali.\n")
        break;
    end
else abort;
end
calcolo()
endfunction

calcolo()
