source: trunk/dports/math/octave-ocs/files/patch-src-Mshichmanhodgesmosfet.cc.diff @ 138491

Last change on this file since 138491 was 138491, checked in by michaelld@…, 4 years ago

octave-ocs: update to 0.1.4; addresses ticket #48298.

File size: 2.6 KB
  • src/Mshichmanhodgesmosfet.cc

    old new  
    123123  double vb   = extvar(3); // V-bulk
    124124  double T    = extvar(4); // Temperature
    125125
    126   double k    = mu0*Cox*pow((T + Tshift)/300.0,-3.0/2.0)*W/L;
    127   double dkdT = mu0*Cox*W*(-3.0/2)*pow((T + Tshift)/300.0,-5.0/2.0 )*(1.0/300.0)/L;
     126  double k    = mu0*Cox*std::pow((T + Tshift)/300.0,-3.0/2.0)*W/L;
     127  double dkdT = mu0*Cox*W*(-3.0/2)*std::pow((T + Tshift)/300.0,-5.0/2.0 )*(1.0/300.0)/L;
    128128 
    129129  double vgs  = vg - vs;
    130130  double vds  = vd - vs;
     
    138138    } 
    139139  else if ( ( (vgs-Vth)>= vds ) && (vds>=0))
    140140    {
    141       *ids  = k*((vgs-Vth)*vds - pow(vds,2)/2 ) + vds/rd;
     141      *ids  = k*((vgs-Vth)*vds - std::pow(vds,2)/2 ) + vds/rd;
    142142      *gm   = k*vds;
    143143      *gd   = k*(vgs-Vth-vds) + (1/rd);
    144       *didT = dkdT*((vgs-Vth)*vds-(pow(vds,2))/2);
     144      *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2))/2);
    145145    } 
    146146  else if (((vgs-Vth)>=(vds))&&(vds<0))
    147147    { 
     
    152152    } 
    153153  else // (i.e. if 0 <= vgs-vth <= vds)
    154154    { 
    155       *ids = (k/2)*pow((vgs-Vth),2) + vds/rd;
     155      *ids = (k/2)*std::pow((vgs-Vth),2) + vds/rd;
    156156      *gm  = k*(vgs-Vth);
    157157      *gd  = 1/rd;
    158       *didT= (dkdT/(2))*pow((vgs-Vth),2);
     158      *didT= (dkdT/(2))*std::pow((vgs-Vth),2);
    159159    } 
    160160
    161161  *P       = -(*ids)*vds;
     
    177177  double vb   = extvar(3); // V-bulk
    178178  double T    = extvar(4); // Temperature
    179179
    180   double k    = - mu0*Cox*pow((T + Tshift)/300.0,-3.0/2.0)*W/L;
    181   double dkdT = - mu0*Cox*W*(-3.0/2.0)*pow((T + Tshift)/300.0,-5.0/2.0 )*(1.0/300.0)/L;
     180  double k    = - mu0*Cox*std::pow((T + Tshift)/300.0,-3.0/2.0)*W/L;
     181  double dkdT = - mu0*Cox*W*(-3.0/2.0)*std::pow((T + Tshift)/300.0,-5.0/2.0 )*(1.0/300.0)/L;
    182182
    183183  double vgs  = vg - vs;
    184184  double vds  = vd - vs;
     
    192192    } 
    193193  else if ( ( (vgs-Vth)<= vds ) && (vds<=0))
    194194    {
    195       *ids  = k*((vgs-Vth)*vds - pow(vds,2)/2 ) + vds/rd;
     195      *ids  = k*((vgs-Vth)*vds - std::pow(vds,2)/2 ) + vds/rd;
    196196      *gm   = k*vds;
    197197      *gd   = k*(vgs-Vth-vds) + (1/rd);
    198       *didT = dkdT*((vgs-Vth)*vds-(pow(vds,2))/2);
     198      *didT = dkdT*((vgs-Vth)*vds-(std::pow(vds,2))/2);
    199199    } 
    200200  else if (((vgs-Vth)<=(vds))&&(vds>0))
    201201    { 
     
    206206    } 
    207207  else // (i.e. if 0 <= vgs-vth <= vds)
    208208    { 
    209       *ids = (k/2)*pow((vgs-Vth),2) + vds/rd;
     209      *ids = (k/2)*std::pow((vgs-Vth),2) + vds/rd;
    210210      *gm  = k*(vgs-Vth);
    211211      *gd  = 1/rd;
    212       *didT= (dkdT/(2))*pow((vgs-Vth),2);
     212      *didT= (dkdT/(2))*std::pow((vgs-Vth),2);
    213213    } 
    214214
    215215  *P       = -(*ids)*vds;
Note: See TracBrowser for help on using the repository browser.