--- src/Mshichmanhodgesmosfet.cc.orig 2020-12-19 16:05:06.000000000 -0600 +++ src/Mshichmanhodgesmosfet.cc 2020-12-19 16:26:47.000000000 -0600 @@ -123,7 +123,7 @@ double vb = extvar(3); // V-bulk double T = extvar(4); // Temperature - double k = mu0*Cox*pow((T + Tshift)/300.0,-3.0/2.0)*W/L; + double k = mu0*Cox*std::pow((T + Tshift)/300.0,-3.0/2.0)*W/L; double dkdT = mu0*Cox*W*(-3.0/2)*std::pow((T + Tshift)/300.0,-5.0/2.0 )*(1.0/300.0)/L; double vgs = vg - vs; @@ -138,10 +138,10 @@ } else if ( ( (vgs-Vth)>= vds ) && (vds>=0)) { - *ids = k*((vgs-Vth)*vds - std::pow(vds,2)/2 ) + vds/rd; + *ids = k*((vgs-Vth)*vds - std::pow(vds,2.0)/2 ) + vds/rd; *gm = k*vds; *gd = k*(vgs-Vth-vds) + (1/rd); - *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2))/2); + *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2.0))/2); } else if (((vgs-Vth)>=(vds))&&(vds<0)) { @@ -152,10 +152,10 @@ } else // (i.e. if 0 <= vgs-vth <= vds) { - *ids = (k/2)*std::pow((vgs-Vth),2) + vds/rd; + *ids = (k/2)*std::pow((vgs-Vth),2.0) + vds/rd; *gm = k*(vgs-Vth); *gd = 1/rd; - *didT= (dkdT/(2))*std::pow((vgs-Vth),2); + *didT= (dkdT/(2))*std::pow((vgs-Vth),2.0); } *P = -(*ids)*vds; @@ -192,10 +192,10 @@ } else if ( ( (vgs-Vth)<= vds ) && (vds<=0)) { - *ids = k*((vgs-Vth)*vds - std::pow(vds,2)/2 ) + vds/rd; + *ids = k*((vgs-Vth)*vds - std::pow(vds,2.0)/2 ) + vds/rd; *gm = k*vds; *gd = k*(vgs-Vth-vds) + (1/rd); - *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2))/2); + *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2.0))/2); } else if (((vgs-Vth)<=(vds))&&(vds>0)) { @@ -206,10 +206,10 @@ } else // (i.e. if 0 <= vgs-vth <= vds) { - *ids = (k/2)*std::pow((vgs-Vth),2) + vds/rd; + *ids = (k/2)*std::pow((vgs-Vth),2.0) + vds/rd; *gm = k*(vgs-Vth); *gd = 1/rd; - *didT= (dkdT/(2))*std::pow((vgs-Vth),2); + *didT= (dkdT/(2))*std::pow((vgs-Vth),2.0); } *P = -(*ids)*vds; @@ -319,7 +319,7 @@ if (args(1).length() == args(2).length()) { parameters = args(1).column_vector_value(); - parameternames = args(2).all_strings(); + parameternames = args(2).string_vector_value(); } else error("Mshichmanhodgesmosfet: parameters and parameternames are expected to have the same length.\n"); @@ -329,7 +329,7 @@ else error("Mshichmanhodgesmosfet: five external values expected.\n"); // Internal variables - if (args(4).is_empty()) + if (args(4).isempty()) {} else if (args(4).length() == 5) intvar = args(4).column_vector_value();