#include<math.h>

inline double sqr(double x)
{
    return(x*x);
}


double ComputeSerial(double F, double R, double C, double L)
{
    /*
    F - frequency
    R - resistance          R==0 means resistor not present  (short circuit)
    C - capacitance         R==0 means capacitor not present (short circuit)
    L - inductance          L==0 means inductor not present  (short circuit)
    */
    const double PI=3.1415927;
    const double W=2*PI*F;
    double Z; // result

    if (C!=0)
        Z = sqrt( R*R + (W*L - 1/sqr(W*C)) );
    else
        Z = sqrt( R*R + W*L*W*L );

    return(Z);
}


double ComputePararel(double F, double R, double C, double L)
{
    /*
    F - frequency
    R - resistance          R==0 means resistor not present  (open circuit)
    C - capacitance         R==0 means capacitor not present (open circuit)
    L - inductance          L==0 means inductor not present  (open circuit)
    */
    const double PI=3.1415927;
    const double W=2*PI*F;
    double Y; // repricocal of the result

    if (R!=0 && L!=0)
        Y = sqrt( 1/(R*R) + sqr(W*C - 1/(W*L)) );
    else if (R!=0)
        Y = sqrt( 1/(R*R) + W*C*W*C );
    else
        Y = W*C - 1/(W*L);

    return(1/Y);
}