added pow025 function

- graham showed significant speedup (8-9x) for sqrt(sqrt(x)) compared to pow(x, 0.25)
This commit is contained in:
andy
2009-09-09 16:30:26 +01:00
parent fd35d9d36a
commit eef3c7ceb6
13 changed files with 102 additions and 0 deletions

View File

@ -110,6 +110,7 @@ Foam::scalar Foam::dimensionSet::operator[](const dimensionType type) const
return exponents_[type];
}
Foam::scalar& Foam::dimensionSet::operator[](const dimensionType type)
{
return exponents_[type];
@ -130,6 +131,7 @@ bool Foam::dimensionSet::operator==(const dimensionSet& ds) const
return equall;
}
bool Foam::dimensionSet::operator!=(const dimensionSet& ds) const
{
return !(operator==(ds));
@ -163,6 +165,7 @@ bool Foam::dimensionSet::operator+=(const dimensionSet& ds) const
return true;
}
bool Foam::dimensionSet::operator-=(const dimensionSet& ds) const
{
if (dimensionSet::debug && *this != ds)
@ -176,6 +179,7 @@ bool Foam::dimensionSet::operator-=(const dimensionSet& ds) const
return true;
}
bool Foam::dimensionSet::operator*=(const dimensionSet& ds)
{
reset((*this)*ds);
@ -183,6 +187,7 @@ bool Foam::dimensionSet::operator*=(const dimensionSet& ds)
return true;
}
bool Foam::dimensionSet::operator/=(const dimensionSet& ds)
{
reset((*this)/ds);
@ -206,6 +211,7 @@ Foam::dimensionSet Foam::max(const dimensionSet& ds1, const dimensionSet& ds2)
return ds1;
}
Foam::dimensionSet Foam::min(const dimensionSet& ds1, const dimensionSet& ds2)
{
if (dimensionSet::debug && ds1 != ds2)
@ -256,6 +262,7 @@ Foam::dimensionSet Foam::pow(const dimensionSet& ds, const scalar p)
return dimPow;
}
Foam::dimensionSet Foam::pow
(
const dimensionSet& ds,
@ -283,6 +290,7 @@ Foam::dimensionSet Foam::pow
return dimPow;
}
Foam::dimensionSet Foam::pow
(
const dimensionedScalar& dS,
@ -309,61 +317,79 @@ Foam::dimensionSet Foam::sqr(const dimensionSet& ds)
return pow(ds, 2);
}
Foam::dimensionSet Foam::pow3(const dimensionSet& ds)
{
return pow(ds, 3);
}
Foam::dimensionSet Foam::pow4(const dimensionSet& ds)
{
return pow(ds, 4);
}
Foam::dimensionSet Foam::pow5(const dimensionSet& ds)
{
return pow(ds, 5);
}
Foam::dimensionSet Foam::pow6(const dimensionSet& ds)
{
return pow(ds, 6);
}
Foam::dimensionSet Foam::pow025(const dimensionSet& ds)
{
return sqrt(sqrt(ds));
}
Foam::dimensionSet Foam::sqrt(const dimensionSet& ds)
{
return pow(ds, 0.5);
}
Foam::dimensionSet Foam::magSqr(const dimensionSet& ds)
{
return pow(ds, 2);
}
Foam::dimensionSet Foam::mag(const dimensionSet& ds)
{
return ds;
}
Foam::dimensionSet Foam::sign(const dimensionSet&)
{
return dimless;
}
Foam::dimensionSet Foam::pos(const dimensionSet&)
{
return dimless;
}
Foam::dimensionSet Foam::neg(const dimensionSet&)
{
return dimless;
}
Foam::dimensionSet Foam::inv(const dimensionSet& ds)
{
return dimless/ds;
}
Foam::dimensionSet Foam::trans(const dimensionSet& ds)
{
if (dimensionSet::debug && !ds.dimensionless())
@ -376,6 +402,7 @@ Foam::dimensionSet Foam::trans(const dimensionSet& ds)
return ds;
}
Foam::dimensionSet Foam::transform(const dimensionSet& ds)
{
return ds;
@ -389,6 +416,7 @@ Foam::dimensionSet Foam::operator-(const dimensionSet& ds)
return ds;
}
Foam::dimensionSet Foam::operator+
(
const dimensionSet& ds1,
@ -409,6 +437,7 @@ Foam::dimensionSet Foam::operator+
return dimSum;
}
Foam::dimensionSet Foam::operator-
(
const dimensionSet& ds1,
@ -429,6 +458,7 @@ Foam::dimensionSet Foam::operator-
return dimDifference;
}
Foam::dimensionSet Foam::operator*
(
const dimensionSet& ds1,
@ -445,6 +475,7 @@ Foam::dimensionSet Foam::operator*
return dimProduct;
}
Foam::dimensionSet Foam::operator/
(
const dimensionSet& ds1,
@ -471,6 +502,7 @@ Foam::dimensionSet Foam::operator&
return ds1*ds2;
}
Foam::dimensionSet Foam::operator^
(
const dimensionSet& ds1,
@ -480,6 +512,7 @@ Foam::dimensionSet Foam::operator^
return ds1*ds2;
}
Foam::dimensionSet Foam::operator&&
(
const dimensionSet& ds1,