Skip to content

Commit

Permalink
use pow instead of sqr as it is defined in std
Browse files Browse the repository at this point in the history
  • Loading branch information
neilkichler committed Jul 16, 2024
1 parent c5c14a5 commit b489ffb
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
4 changes: 4 additions & 0 deletions examples/basic/basic.cu
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ constexpr auto f(auto x, auto y)
auto m = x * 2;
auto n = log2(x);
auto o = log10(x);
auto p = tan(x);
auto q = atan(x);

print(a);
print(b);
Expand All @@ -44,6 +46,8 @@ constexpr auto f(auto x, auto y)
print(m);
print(n);
print(o);
print(p);
print(q);
return a;
}

Expand Down
16 changes: 10 additions & 6 deletions include/cutangent/arithmetic/basic.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -153,35 +153,39 @@ fn tangent<T> cos(tangent<T> x)
template<typename T>
fn tangent<T> tan(tangent<T> x)
{
using std::pow;
using std::tan;

return { tan(x.v), static_cast<T>(1.0) + sqr(tan(x.v)) };
return { tan(x.v), static_cast<T>(1.0) + pow(tan(x.v), 2) };
}

template<typename T>
fn tangent<T> asin(tangent<T> x)
{
using std::asin;
using std::pow;
using std::sqrt;

return { asin(x.v), x.d / sqrt(1.0 - sqr(x.v)) };
return { asin(x.v), x.d / sqrt(1.0 - pow(x.v, 2)) };
}

template<typename T>
fn tangent<T> acos(tangent<T> x)
{
using std::acos;
using std::pow;
using std::sqrt;

return { acos(x.v), -x.d / sqrt(1.0 - sqr(x.v)) };
return { acos(x.v), -x.d / sqrt(1.0 - pow(x.v, 2)) };
}

template<typename T>
fn tangent<T> atan(tangent<T> x)
{
using std::atan;
using std::pow;

return { atan(x.v), x.d / (1.0 + sqr(x.v)) };
return { atan(x.v), x.d / (1.0 + pow(x.v, 2)) };
}

template<typename T>
Expand All @@ -206,15 +210,15 @@ fn tangent<T> log2(tangent<T> x)
{
using std::log2;

return { log2(x.v), x.d / (x.v * std::numbers::ln2_v<T>) };
return { log2(x.v), x.d / (x.v * std::numbers::ln2_v<T>)};
}

template<typename T>
fn tangent<T> log10(tangent<T> x)
{
using std::log10;

return { log10(x.v), x.d / (x.v * std::numbers::ln10_v<T>) };
return { log10(x.v), x.d / (x.v * std::numbers::ln10_v<T>)};
}

template<typename T>
Expand Down

0 comments on commit b489ffb

Please sign in to comment.