Skip to content

Commit

Permalink
function implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
nickgerrets committed Aug 7, 2024
1 parent eaef962 commit 664b358
Showing 1 changed file with 96 additions and 0 deletions.
96 changes: 96 additions & 0 deletions src/core_functions/scalar/math/numeric.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1128,6 +1128,102 @@ ScalarFunction AcosFun::GetFunction() {
ScalarFunction::UnaryFunction<double, double, NoInfiniteDoubleWrapper<ACos>>);
}

//===--------------------------------------------------------------------===//
// cosh
//===--------------------------------------------------------------------===//
struct CoshOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
return (double)std::cosh(input);
}
};

ScalarFunction CoshFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, CoshOperator>);
}

//===--------------------------------------------------------------------===//
// acosh
//===--------------------------------------------------------------------===//
struct AcoshOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
return (double)std::acosh(input);
}
};

ScalarFunction AcoshFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, AcoshOperator>);
}

//===--------------------------------------------------------------------===//
// sinh
//===--------------------------------------------------------------------===//
struct SinhOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
return (double)std::sinh(input);
}
};

ScalarFunction SinhFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, SinhOperator>);
}

//===--------------------------------------------------------------------===//
// asinh
//===--------------------------------------------------------------------===//
struct AsinhOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
return (double)std::asinh(input);
}
};

ScalarFunction AsinhFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, AsinhOperator>);
}

//===--------------------------------------------------------------------===//
// tanh
//===--------------------------------------------------------------------===//
struct TanhOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
return (double)std::tanh(input);
}
};

ScalarFunction TanhFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, TanhOperator>);
}

//===--------------------------------------------------------------------===//
// atanh
//===--------------------------------------------------------------------===//
struct AtanhOperator {
template <class TA, class TR>
static inline TR Operation(TA input) {
if (input < -1 || input > 1) {
throw InvalidInputException("ATANH is undefined outside [-1,1]");
}
if (input == -1 || input == 1) {
return INFINITY;
}
return (double)std::atanh(input);
}
};

ScalarFunction AtanhFun::GetFunction() {
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
ScalarFunction::UnaryFunction<double, double, AtanhOperator>);
}

//===--------------------------------------------------------------------===//
// cot
//===--------------------------------------------------------------------===//
Expand Down

0 comments on commit 664b358

Please sign in to comment.