Skip to content

Commit

Permalink
add sinh, cosh, tanh, asinh, acosh, atanh
Browse files Browse the repository at this point in the history
  • Loading branch information
neilkichler committed Jul 17, 2024
1 parent b489ffb commit 63e4fde
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 17 deletions.
50 changes: 33 additions & 17 deletions examples/basic/basic.cu
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,31 @@ constexpr auto f(auto x, auto y)
{
auto print = [](auto x) { printf("{%g, %g}\n", x.v, x.d); };

auto a = x + y;
auto b = x - y;
auto c = x * y;
auto d = x / y;
auto e = max(x, y);
auto f = min(x, y);
auto g = mid(x, y, y);
auto h = sin(x);
auto i = cos(x);
auto j = exp(x);
auto k = log(x);
auto l = pown(x, 2);
auto m = x * 2;
auto n = log2(x);
auto o = log10(x);
auto p = tan(x);
auto q = atan(x);
auto a = x + y;
auto b = x - y;
auto c = x * y;
auto d = x / y;
auto e = max(x, y);
auto f = min(x, y);
auto g = mid(x, y, y);
auto h = sin(x);
auto i = cos(x);
auto j = exp(x);
auto k = log(x);
auto l = pown(x, 2);
auto m = x * 2;
auto n = log2(x);
auto o = log10(x);
auto p = tan(x);
auto q = asin(x);
auto r = acos(x);
auto s = atan(x);
auto t = sinh(x);
auto u = cosh(x);
auto v = tanh(x);
auto w = asinh(x);
auto aa = acosh(x);
auto bb = atanh(x);

print(a);
print(b);
Expand All @@ -48,6 +56,14 @@ constexpr auto f(auto x, auto y)
print(o);
print(p);
print(q);
print(r);
print(s);
print(t);
print(u);
print(v);
print(w);
print(aa);
print(bb);
return a;
}

Expand Down
54 changes: 54 additions & 0 deletions include/cutangent/arithmetic/basic.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,60 @@ fn tangent<T> atan(tangent<T> x)
return { atan(x.v), x.d / (1.0 + pow(x.v, 2)) };
}

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

return { sinh(x.v), cosh(x.v) * x.d };
}

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

return { cosh(x.v), sinh(x.v) * x.d };
}

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

return { tanh(x.v), x.d / (pow(cosh(x.v), 2)) };
}

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

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

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

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

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

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

template<typename T>
fn tangent<T> exp(tangent<T> x)
{
Expand Down

0 comments on commit 63e4fde

Please sign in to comment.