Skip to content

Commit

Permalink
Bug fix and minor improvements.
Browse files Browse the repository at this point in the history
laffernandes committed Feb 2, 2020
1 parent 77f9b34 commit d619805
Showing 27 changed files with 254 additions and 112 deletions.
18 changes: 9 additions & 9 deletions AlgorithmInverseKinematics.cpp
Original file line number Diff line number Diff line change
@@ -56,17 +56,17 @@
\
GABM_ALWAYS_INLINE decltype(auto) GABM_Algorithm_InverseKinematics_Wrapper(gabm::real_t ANG1_ARG, gabm::real_t ANG2_ARG, gabm::real_t ANG3_ARG, gabm::real_t ANG4_ARG, gabm::real_t ANG5_ARG)

#define GABM_REPORT_THAT_ALGORITHM_INVERSE_KINEMATICS_IS_NOT_IMPLEMENTED() \
GABM_REPORT_THAT_OPERATION_IS_NOT_IMPLEMENTED(Algorithm, InverseKinematics, _:_)
#define GABM_REPORT_ALGORITHM_INVERSE_KINEMATICS_IS_NOT_IMPLEMENTED() \
GABM_REPORT_OPERATION_IS_NOT_IMPLEMENTED(Algorithm, InverseKinematics, _:_)

#define GABM_REPORT_THAT_ALGORITHM_INVERSE_KINEMATICS_LEADS_TO_COMPILATION_ERROR() \
GABM_REPORT_THAT_OPERATION_LEADS_TO_COMPILATION_ERROR(Algorithm, InverseKinematics, _:_)
#define GABM_REPORT_ALGORITHM_INVERSE_KINEMATICS_LEADS_TO_COMPILATION_ERROR() \
GABM_REPORT_OPERATION_LEADS_TO_COMPILATION_ERROR(Algorithm, InverseKinematics, _:_)

GABM_INITIALIZE_RANDOM_ANGLES(random_angles1)
GABM_INITIALIZE_RANDOM_ANGLES(random_angles2)
GABM_INITIALIZE_RANDOM_ANGLES(random_angles3)
GABM_INITIALIZE_RANDOM_ANGLES(random_angles4)
GABM_INITIALIZE_RANDOM_ANGLES(random_angles5)
GABM_DECLARE_RANDOM_ANGLES(random_angles1)
GABM_DECLARE_RANDOM_ANGLES(random_angles2)
GABM_DECLARE_RANDOM_ANGLES(random_angles3)
GABM_DECLARE_RANDOM_ANGLES(random_angles4)
GABM_DECLARE_RANDOM_ANGLES(random_angles5)

GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(Algorithm, InverseKinematics, random_angles1, random_angles2, random_angles3, random_angles4, random_angles5)

14 changes: 7 additions & 7 deletions BinaryOperations.cpp
Original file line number Diff line number Diff line change
@@ -35,15 +35,15 @@
template<typename LeftArgumentType, typename RightArgumentType> \
GABM_ALWAYS_INLINE decltype(auto) GABM_BinaryOperation_##OPERATION##_Wrapper(LeftArgumentType const &LHS_ARG, RightArgumentType const &RHS_ARG)

#define GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(OPERATION) \
GABM_REPORT_THAT_OPERATION_IS_NOT_IMPLEMENTED(BinaryOperation, OPERATION, LeftGrade:GABM_LEFT_GRADE/RightGrade:GABM_RIGHT_GRADE)
#define GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(OPERATION) \
GABM_REPORT_OPERATION_IS_NOT_IMPLEMENTED(BinaryOperation, OPERATION, LeftGrade:GABM_LEFT_GRADE/RightGrade:GABM_RIGHT_GRADE)

#define GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OPERATION) \
GABM_REPORT_THAT_OPERATION_LEADS_TO_COMPILATION_ERROR(BinaryOperation, OPERATION, LeftGrade:GABM_LEFT_GRADE/RightGrade:GABM_RIGHT_GRADE)
#define GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OPERATION) \
GABM_REPORT_OPERATION_LEADS_TO_COMPILATION_ERROR(BinaryOperation, OPERATION, LeftGrade:GABM_LEFT_GRADE/RightGrade:GABM_RIGHT_GRADE)

GABM_INITIALIZE_RANDOM_BLADES(GABM_LEFT_GRADE, left_random_blades)
GABM_INITIALIZE_RANDOM_BLADES(GABM_RIGHT_GRADE, right_random_blades)
GABM_INITIALIZE_RANDOM_INVERTIBLE_BLADES(GABM_RIGHT_GRADE, right_random_invertible_blades)
GABM_DECLARE_RANDOM_BLADES(GABM_LEFT_GRADE, left_random_blades)
GABM_DECLARE_RANDOM_BLADES(GABM_RIGHT_GRADE, right_random_blades)
GABM_DECLARE_RANDOM_INVERTIBLE_BLADES(GABM_RIGHT_GRADE, right_random_invertible_blades)

GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(BinaryOperation, Addition, left_random_blades, right_random_blades)
GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(BinaryOperation, CommutatorProduct, left_random_blades, right_random_blades)
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ endif()
# Create the project
set(VERSION_MAJOR 2)
set(VERSION_MINOR 0)
set(VERSION_PATCH 1)
set(VERSION_PATCH 2)

project(GA-Benchmark
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
@@ -67,7 +67,7 @@ endmacro()

function(configure_target TARGET_NAME OPERATION SOLUTION)
add_executable(${TARGET_NAME} "${PROJECT_SOURCE_DIR}/${OPERATION}.cpp")
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME})
set_target_properties(${TARGET_NAME} PROPERTIES ${${SOLUTION}_PROPERTIES} OUTPUT_NAME ${TARGET_NAME})

string(CONFIGURE "${${SOLUTION}_${OPERATION}_INCLUDE_DIR}" ${OPERATION}_INCLUDE_DIR)
target_include_directories(${TARGET_NAME} PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/source/${SOLUTION}" ${GoogleBenchmark_INCLUDE_DIRS} ${${SOLUTION}_INCLUDE_EXTRA_DIR} ${${SOLUTION}_INCLUDE_DIR} ${${OPERATION}_INCLUDE_DIR})
22 changes: 15 additions & 7 deletions Macros.hpp
Original file line number Diff line number Diff line change
@@ -69,7 +69,7 @@
->DisplayAggregatesOnly(true);

#define GABM_ASSERT_OPERATION_DEFINITION(GROUP, OPERATION) \
static_assert(GABM_##GROUP##_##OPERATION##_Defined, "Use GABM_DEFINE_<GROUP-NAME>[_<OPERATION-NAME>], GABM_REPORT_THAT_<OPERATION-GROUP-NAME>_[OPERATION-NAME_]IS_NOT_IMPLEMENTED, or GABM_REPORT_THAT_<OPERATION-GROUP-NAME>_[OPERATION-NAME_]LEADS_TO_COMPILATION_ERROR to define the missing operation.");
static_assert(GABM_##GROUP##_##OPERATION##_Defined, "Use GABM_DEFINE_<GROUP-NAME>[_<OPERATION-NAME>], GABM_REPORT_<OPERATION-GROUP-NAME>_[OPERATION-NAME_]IS_NOT_IMPLEMENTED, or GABM_REPORT_<OPERATION-GROUP-NAME>_[OPERATION-NAME_]LEADS_TO_COMPILATION_ERROR to define the missing operation.");

#define GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(GROUP, OPERATION, ...) \
auto const GABM_##GROUP##_##OPERATION##_RandomArguments = gabm::WrapRandomArguments(__VA_ARGS__);
@@ -103,7 +103,7 @@
return GABM_##GROUP##_##OPERATION##_Wrapper(__VA_ARGS__); \
}

#define GABM_REPORT_THAT_OPERATION_IS_NOT_IMPLEMENTED(GROUP, OPERATION, CASE) \
#define GABM_REPORT_OPERATION_IS_NOT_IMPLEMENTED(GROUP, OPERATION, CASE) \
constexpr static bool GABM_##GROUP##_##OPERATION##_Defined = true; \
\
template<typename... ExtraArgsType> \
@@ -113,7 +113,7 @@
\
GABM_CAPTURE(GABM_##GROUP##_##OPERATION, GABM_SYSTEM_NAME, GABM_SYSTEM_VERSION, GABM_COMPILER_ID, GABM_COMPILER_VERSION, GABM_SOLUTION, GABM_MODEL, GABM_D_DIMENSIONS, CASE)

#define GABM_REPORT_THAT_OPERATION_LEADS_TO_COMPILATION_ERROR(GROUP, OPERATION, CASE) \
#define GABM_REPORT_OPERATION_LEADS_TO_COMPILATION_ERROR(GROUP, OPERATION, CASE) \
constexpr static bool GABM_##GROUP##_##OPERATION##_Defined = true; \
\
template<typename... ExtraArgsType> \
@@ -133,7 +133,7 @@
\
GABM_CAPTURE(GABM_##GROUP##_##OPERATION, GABM_SYSTEM_NAME, GABM_SYSTEM_VERSION, GABM_COMPILER_ID, GABM_COMPILER_VERSION, GABM_SOLUTION, GABM_MODEL, GABM_D_DIMENSIONS, CASE)

#define GABM_INITIALIZE_RANDOM_ANGLES(GLOBAL_VARIABLE) \
#define GABM_DECLARE_RANDOM_ANGLES(GLOBAL_VARIABLE) \
class GABM_##GLOBAL_VARIABLE##_Generator { \
public: \
static GABM_INLINE decltype(auto) MakeRandomEntry(std::default_random_engine &random_engine) { \
@@ -143,7 +143,7 @@
\
gabm::RandomEntries<GABM_##GLOBAL_VARIABLE##_Generator> const GLOBAL_VARIABLE;

#define GABM_INITIALIZE_RANDOM_BLADES(GRADE, GLOBAL_VARIABLE) \
#define GABM_DECLARE_RANDOM_BLADES(GRADE, GLOBAL_VARIABLE) \
class GABM_##GLOBAL_VARIABLE##_Generator { \
public: \
static GABM_INLINE decltype(auto) MakeRandomEntry(std::default_random_engine &random_engine) { \
@@ -153,7 +153,7 @@
\
gabm::RandomEntries<GABM_##GLOBAL_VARIABLE##_Generator> const GLOBAL_VARIABLE;

#define GABM_INITIALIZE_RANDOM_INVERTIBLE_BLADES(GRADE, GLOBAL_VARIABLE) \
#define GABM_DECLARE_RANDOM_INVERTIBLE_BLADES(GRADE, GLOBAL_VARIABLE) \
class GABM_##GLOBAL_VARIABLE##_Generator { \
public: \
static GABM_INLINE decltype(auto) MakeRandomEntry(std::default_random_engine &random_engine) { \
@@ -164,6 +164,14 @@
gabm::RandomEntries<GABM_##GLOBAL_VARIABLE##_Generator> const GLOBAL_VARIABLE;

#define GABM_MAIN() \
BENCHMARK_MAIN();
int main(int argc, char **argv) { \
benchmark::Initialize(&argc, argv); \
if (benchmark::ReportUnrecognizedArguments(argc, argv)) { \
return EXIT_FAILURE; \
} \
gabm::InitializeRandomEntries(); \
benchmark::RunSpecifiedBenchmarks(); \
return EXIT_SUCCESS; \
}

#endif // __GABM_MACROS_HPP__
45 changes: 36 additions & 9 deletions Types.hpp
Original file line number Diff line number Diff line change
@@ -29,6 +29,7 @@
#include <random>
#include <vector>

#include <execinfo.h>
#include <benchmark/benchmark.h>

namespace gabm {
@@ -41,16 +42,32 @@ namespace gabm {
using vector_coords_t = std::array<real_t, GABM_N_DIMENSIONS>;
using factors_list_t = std::vector<vector_coords_t>;

class BaseRandomEntries;

namespace detail {

std::default_random_engine random_engine{ GABM_OPERATION }; /*The seed is constant because all solutions must use the same set of random numbers.*/

std::vector<BaseRandomEntries*> random_entries;

}

class BaseRandomEntries {
public:

BaseRandomEntries() {
detail::random_entries.push_back(this);
}

virtual void init() = 0;
};

template<typename RandomEntryGeneratorClass>
class RandomEntries {
class RandomEntries : public BaseRandomEntries {
private:

using Super = BaseRandomEntries;

using entry_type = decltype(RandomEntryGeneratorClass::MakeRandomEntry(detail::random_engine));
using container_type = std::vector<entry_type>;

@@ -62,30 +79,40 @@ namespace gabm {
using const_reference = typename container_type::const_reference;

RandomEntries() :
entries_() {
entries_.reserve(GABM_ITERATIONS);
for (std::size_t ind = 0; ind != (GABM_ITERATIONS); ++ind) {
entries_.push_back(RandomEntryGeneratorClass::MakeRandomEntry(detail::random_engine));
Super(),
_entries() {
_entries.resize(GABM_ITERATIONS);
}

void init() override {
for (auto &entry : _entries) {
entry = RandomEntryGeneratorClass::MakeRandomEntry(detail::random_engine);
}
}

GABM_ALWAYS_INLINE size_type size() const {
return entries_.size();
return _entries.size();
}

GABM_ALWAYS_INLINE reference operator[](size_type ind) {
return entries_[ind];
return _entries[ind];
}

GABM_ALWAYS_INLINE const_reference operator[](size_type ind) const {
return entries_[ind];
return _entries[ind];
}

private:

container_type entries_;
container_type _entries;
};

void InitializeRandomEntries() {
for (auto ptr : detail::random_entries) {
ptr->init();
}
}

}

#endif // __GABM_TYPES_HPP__
12 changes: 6 additions & 6 deletions UnaryOperations.cpp
Original file line number Diff line number Diff line change
@@ -35,14 +35,14 @@
template<typename ArgumentType> \
GABM_ALWAYS_INLINE decltype(auto) GABM_UnaryOperation_##OPERATION##_Wrapper(ArgumentType const &ARG)

#define GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(OPERATION) \
GABM_REPORT_THAT_OPERATION_IS_NOT_IMPLEMENTED(UnaryOperation, OPERATION, Grade:GABM_GRADE)
#define GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(OPERATION) \
GABM_REPORT_OPERATION_IS_NOT_IMPLEMENTED(UnaryOperation, OPERATION, Grade:GABM_GRADE)

#define GABM_REPORT_THAT_UNARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OPERATION) \
GABM_REPORT_THAT_OPERATION_LEADS_TO_COMPILATION_ERROR(UnaryOperation, OPERATION, Grade:GABM_GRADE)
#define GABM_REPORT_UNARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OPERATION) \
GABM_REPORT_OPERATION_LEADS_TO_COMPILATION_ERROR(UnaryOperation, OPERATION, Grade:GABM_GRADE)

GABM_INITIALIZE_RANDOM_BLADES(GABM_GRADE, random_blades)
GABM_INITIALIZE_RANDOM_INVERTIBLE_BLADES(GABM_GRADE, random_invertible_blades)
GABM_DECLARE_RANDOM_BLADES(GABM_GRADE, random_blades)
GABM_DECLARE_RANDOM_INVERTIBLE_BLADES(GABM_GRADE, random_invertible_blades)

GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(UnaryOperation, CliffordConjugation, random_blades)
GABM_DEFINE_RANDOM_ARGUMENTS_FOR_OPERATION(UnaryOperation, Dualization, random_blades)
2 changes: 1 addition & 1 deletion Utils.hpp
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ namespace gabm {
template<grade_t Grade>
decltype(auto) MakeRandomInvertibleBlade(std::default_random_engine &random_engine) {
auto result = MakeRandomBlade<Grade>(random_engine);
while (abs(SquaredReverseNorm<Grade>(result)) <= GABM_ZERO_TOLERANCE) {
while (std::abs(SquaredReverseNorm<Grade>(result)) <= GABM_ZERO_TOLERANCE) {
result = MakeRandomBlade<Grade>(random_engine);
}
return result;
89 changes: 78 additions & 11 deletions gabm_results.ipynb
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {
"scrolled": true
},
@@ -52,7 +52,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {
"scrolled": true
},
@@ -73,9 +73,17 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Reading JSON files: 100%|█████████████████████████████████████████████████████████| 1161/1161 [00:01<00:00, 705.95it/s]\n"
]
}
],
"source": [
"input_path = path.join(path.abspath(getcwd()), 'build') # Assuming that the working directory is '<path-to>/ga-benchmark' and input data is in '<path-to>/ga-benchmark/build' folder.\n",
"data = read_data(folder=input_path, verbose=False)"
@@ -90,7 +98,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {
"scrolled": true
},
@@ -126,11 +134,40 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 5,
"metadata": {
"scrolled": false
},
"outputs": [],
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d981a37777354152bdd2c84328278ca3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HTML(value='<p style=\"line-height: 1.5\"><b>Context:</b> Build using GNU Compiler Collection (version 7.4.0) in…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2d9866d1878642de8ee882a3edd7e5f4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Tab(children=(VBox(children=(Checkbox(value=True, description='GATL', indent=False), Checkbox(value=True, desc…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def make_configuration_gui(given_data: dict) -> dict:\n",
" given_solutions, given_models, given_operations = available_data(given_data)\n",
@@ -233,11 +270,26 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [],
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "859dfdebeaa74583a06260b30faa901f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HTML(value='<!DOCTYPE html><html><head><style>.verticalTableHeader {text-align: center; line-height: 1.0; whit…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(widgets.HTML(value=make_table_of_features(data=filter_data(data), solutions=SOLUTIONS), placeholder='Table of Features'))"
]
@@ -262,9 +314,24 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 7,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ed41b905f4954f7bb7ffe84526ffc713",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HTML(value='<!DOCTYPE html><html><head><style>table, th, td {border: 1px solid black; border-collapse: collaps…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tables = make_ranking(data=filter_data(data), solutions=SOLUTIONS)\n",
"for table in tables:\n",
5 changes: 5 additions & 0 deletions source/GATL/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -19,6 +19,11 @@

set(GATL_SUCCESS true)

# # Set (global) properties
# set(GATL_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(GATL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/GATL/install/include" CACHE PATH "The include directory of the Geometric Algebra Template Library (GATL).")
set(GATL_INCLUDE_EXTRA_DIR "")
5 changes: 5 additions & 0 deletions source/Gaalet/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -19,6 +19,11 @@

set(Gaalet_SUCCESS true)

# # Set (global) properties
# set(Gaalet_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(Gaalet_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/Gaalet/install/include/gaalet" CACHE PATH "The include directory of the Geometric Algebra ALgorithms Expression Templates (Gaalet).")
set(Gaalet_INCLUDE_EXTRA_DIR "")
18 changes: 9 additions & 9 deletions source/Gaalet/SpecializedBinaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -25,9 +25,9 @@ GABM_DEFINE_BINARY_OPERATION(Addition, lhs, rhs) {
return eval(lhs + rhs);
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)

GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return eval(lhs * rhs);
@@ -38,31 +38,31 @@ GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return eval(lhs & rhs);
}
#else
GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(HestenesInnerProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(HestenesInnerProduct)
#endif

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(InverseGeometricProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(InverseGeometricProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(LeftContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(LeftContraction)

#if ((GABM_LEFT_GRADE) + (GABM_RIGHT_GRADE)) <= (GABM_N_DIMENSIONS)
GABM_DEFINE_BINARY_OPERATION(OuterProduct, lhs, rhs) {
return eval(lhs ^ rhs);
}
#else
GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OuterProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OuterProduct)
#endif

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)

#if (GABM_LEFT_GRADE) == (GABM_RIGHT_GRADE)
GABM_DEFINE_BINARY_OPERATION(ScalarProduct, lhs, rhs) {
return eval(scalar(lhs, rhs));
}
#else
GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(ScalarProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(ScalarProduct)
#endif

GABM_DEFINE_BINARY_OPERATION(Subtraction, lhs, rhs) {
16 changes: 8 additions & 8 deletions source/Gaalet/SpecializedUnaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -21,28 +21,28 @@
#ifndef __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
#define __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Dualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Dualization)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)

GABM_DEFINE_UNARY_OPERATION(Inversion, arg) {
return eval(!arg);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)

GABM_DEFINE_UNARY_OPERATION(Reversion, arg) {
return eval(~arg);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(SquaredReverseNorm)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(SquaredReverseNorm)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryMinus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryMinus)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)

#endif // __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
5 changes: 5 additions & 0 deletions source/Gaalop/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -56,6 +56,11 @@ if(NOT EXISTS ${Gaalop_JAR_FILE})
set(Gaalop_SUCCESS false)
endif()

# # Set (global) properties
# set(Gaalop_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
find_path(Gaalop_INCLUDE_DIR NAMES GPCUtils.h HINTS "${Gaalop_ROOT_DIR}/include" DOC "The include directory of the Geometric Algebra Algorithms Optimizer (Gaalop).")
set(Gaalop_INCLUDE_EXTRA_DIR "") # no dependencies
18 changes: 9 additions & 9 deletions source/Gaalop/SpecializedBinaryOperations.hpg.in
Original file line number Diff line number Diff line change
@@ -32,9 +32,9 @@ GABM_DEFINE_BINARY_OPERATION(Addition, lhs, rhs) {
return to_array(add_r);
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)

GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
#pragma gpc begin
@@ -59,10 +59,10 @@ GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return to_array(hip_r);
}
#else
GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(HestenesInnerProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(HestenesInnerProduct)
#endif

GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(InverseGeometricProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(InverseGeometricProduct)
// Gaalop replaces the CLUCalc code below by a truncated version of the source code that should be generated, which leads to compilation error.
/*
GABM_DEFINE_BINARY_OPERATION(InverseGeometricProduct, lhs, rhs) {
@@ -77,7 +77,7 @@ GABM_DEFINE_BINARY_OPERATION(InverseGeometricProduct, lhs, rhs) {
}
*/

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(LeftContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(LeftContraction)

#if (GABM_LEFT_GRADE) + (GABM_RIGHT_GRADE) <= (GABM_N_DIMENSIONS)
GABM_DEFINE_BINARY_OPERATION(OuterProduct, lhs, rhs) {
@@ -91,14 +91,14 @@ GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(LeftContraction)
return to_array(op_r);
}
#else
GABM_REPORT_THAT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OuterProduct)
GABM_REPORT_BINARY_OPERATION_LEADS_TO_COMPILATION_ERROR(OuterProduct)
#endif

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)

GABM_DEFINE_BINARY_OPERATION(Subtraction, lhs, rhs) {
#pragma gpc begin
14 changes: 7 additions & 7 deletions source/Gaalop/SpecializedUnaryOperations.hpg.in
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@
#ifndef __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
#define __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)

GABM_DEFINE_UNARY_OPERATION(Dualization, arg) {
#pragma gpc begin
@@ -33,11 +33,11 @@ GABM_DEFINE_UNARY_OPERATION(Dualization, arg) {
return to_array(dual_r);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Inversion)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Inversion)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)

GABM_DEFINE_UNARY_OPERATION(Reversion, arg) {
#pragma gpc begin
@@ -49,7 +49,7 @@ GABM_DEFINE_UNARY_OPERATION(Reversion, arg) {
return to_array(r_r);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(SquaredReverseNorm)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(SquaredReverseNorm)

GABM_DEFINE_UNARY_OPERATION(UnaryMinus, arg) {
#pragma gpc begin
@@ -61,8 +61,8 @@ GABM_DEFINE_UNARY_OPERATION(UnaryMinus, arg) {
return to_array(uminus_r);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)

#endif // __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
5 changes: 5 additions & 0 deletions source/Garamon/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -43,6 +43,11 @@ foreach(MODEL ${MODELS_LIST})
endforeach()
endforeach()

# # Set (global) properties
# set(Garamon_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(Garamon_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/Garamon/install/usr/local/include" CACHE PATH "The include directory of the Geometric Algebra Recursive and Adaptive Monster (Garamon).")
set(Garamon_INCLUDE_EXTRA_DIR ${EIGEN3_INCLUDE_DIR})
6 changes: 3 additions & 3 deletions source/Garamon/SpecializedBinaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -25,9 +25,9 @@ GABM_DEFINE_BINARY_OPERATION(Addition, lhs, rhs) {
return lhs + rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)

GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return lhs * rhs;
@@ -53,7 +53,7 @@ GABM_DEFINE_BINARY_OPERATION(RightContraction, lhs, rhs) {
return lhs > rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_DEFINE_BINARY_OPERATION(ScalarProduct, lhs, rhs) {
return lhs.scalarProduct(rhs);
10 changes: 5 additions & 5 deletions source/Garamon/SpecializedUnaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -21,19 +21,19 @@
#ifndef __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
#define __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(CliffordConjugation)

GABM_DEFINE_UNARY_OPERATION(Dualization, arg) {
return arg.dual();
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(GradeInvolution)

GABM_DEFINE_UNARY_OPERATION(Inversion, arg) {
return arg.inv();
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)

GABM_DEFINE_UNARY_OPERATION(Reversion, arg) {
return arg.reverse();
@@ -47,8 +47,8 @@ GABM_DEFINE_UNARY_OPERATION(UnaryMinus, arg) {
return -arg;
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)

#endif // __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
5 changes: 5 additions & 0 deletions source/GluCatFramedMulti/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -19,6 +19,11 @@

set(GluCatFramedMulti_SUCCESS true)

# # Set (global) properties
# set(GluCatFramedMulti_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(GluCatFramedMulti_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/GluCat/install/usr/local/include" CACHE PATH "The include directory of the Clifford Algebra Templates (GluCat) library.")
set(GluCatFramedMulti_INCLUDE_EXTRA_DIR "")
10 changes: 5 additions & 5 deletions source/GluCatFramedMulti/SpecializedBinaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -25,9 +25,9 @@ GABM_DEFINE_BINARY_OPERATION(Addition, lhs, rhs) {
return lhs + rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)

GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return lhs * rhs;
@@ -49,11 +49,11 @@ GABM_DEFINE_BINARY_OPERATION(OuterProduct, lhs, rhs) {
return lhs ^ rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)

GABM_DEFINE_BINARY_OPERATION(Subtraction, lhs, rhs) {
return lhs - rhs;
8 changes: 4 additions & 4 deletions source/GluCatFramedMulti/SpecializedUnaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ GABM_DEFINE_UNARY_OPERATION(CliffordConjugation, arg) {
return conj(arg);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Dualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Dualization)

GABM_DEFINE_UNARY_OPERATION(GradeInvolution, arg) {
return involute(arg);
@@ -35,7 +35,7 @@ GABM_DEFINE_UNARY_OPERATION(Inversion, arg) {
return inv(arg);
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Normalization)

GABM_DEFINE_UNARY_OPERATION(Reversion, arg) {
return reverse(arg);
@@ -49,8 +49,8 @@ GABM_DEFINE_UNARY_OPERATION(UnaryMinus, arg) {
return -arg;
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(Undualization)

#endif // __GABM_SPECIALIZED_UNARY_OPERATIONS_HPP__
5 changes: 5 additions & 0 deletions source/GluCatMatrixMulti/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -19,6 +19,11 @@

set(GluCatMatrixMulti_SUCCESS true)

# # Set (global) properties
# set(GluCatMatrixMulti_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(GluCatMatrixMulti_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/GluCat/install/usr/local/include" CACHE PATH "The include directory of the Clifford Algebra Templates (GluCat) library.")
set(GluCatMatrixMulti_INCLUDE_EXTRA_DIR "") # no dependencies
5 changes: 5 additions & 0 deletions source/TbGAL/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -26,6 +26,11 @@ if(NOT ${EIGEN3_FOUND})
set(TbGAL_SUCCESS false)
endif()

# # Set (global) properties
# set(TbGAL_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(TbGAL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/TbGAL/install/include" CACHE PATH "The include directory of the Tensor-based Geometric Algebra Library (TbGAL).")
set(TbGAL_INCLUDE_EXTRA_DIR ${EIGEN3_INCLUDE_DIR})
8 changes: 4 additions & 4 deletions source/TbGAL/SpecializedBinaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -21,9 +21,9 @@
#ifndef __GABM_SPECIALIZED_BINARY_OPERATIONS_HPP__
#define __GABM_SPECIALIZED_BINARY_OPERATIONS_HPP__

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(Addition)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(Addition)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(CommutatorProduct)

GABM_DEFINE_BINARY_OPERATION(DotProduct, lhs, rhs) {
return dot(lhs, rhs);
@@ -49,7 +49,7 @@ GABM_DEFINE_BINARY_OPERATION(OuterProduct, lhs, rhs) {
return op(lhs, rhs);
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_DEFINE_BINARY_OPERATION(RightContraction, lhs, rhs) {
return rcont(lhs, rhs);
@@ -59,6 +59,6 @@ GABM_DEFINE_BINARY_OPERATION(ScalarProduct, lhs, rhs) {
return sp(lhs, rhs);
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(Subtraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(Subtraction)

#endif // __GABM_SPECIALIZED_BINARY_OPERATIONS_HPP__
5 changes: 5 additions & 0 deletions source/Versor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -26,6 +26,11 @@ if(NOT EXISTS ${Versor_LIBRARY})
set(Versor_SUCCESS false)
endif()

# # Set (global) properties
# set(Versor_PROPERTIES
# PROPERTY VALUE
# )

# Set (global) include directories and libraries
set(Versor_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libs/Versor/install/usr/local/include" CACHE PATH "The include directory of the Versor library.")
set(Versor_INCLUDE_EXTRA_DIR "") # no dependencies
10 changes: 5 additions & 5 deletions source/Versor/SpecializedBinaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -29,13 +29,13 @@ GABM_DEFINE_BINARY_OPERATION(CommutatorProduct, lhs, rhs) {
return lhs % rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(DotProduct)

GABM_DEFINE_BINARY_OPERATION(GeometricProduct, lhs, rhs) {
return lhs * rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(HestenesInnerProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(HestenesInnerProduct)

GABM_DEFINE_BINARY_OPERATION(InverseGeometricProduct, lhs, rhs) {
return lhs / rhs;
@@ -49,11 +49,11 @@ GABM_DEFINE_BINARY_OPERATION(OuterProduct, lhs, rhs) {
return lhs ^ rhs;
}

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RightContraction)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(RegressiveProduct)

GABM_REPORT_THAT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)
GABM_REPORT_BINARY_OPERATION_IS_NOT_IMPLEMENTED(ScalarProduct)

GABM_DEFINE_BINARY_OPERATION(Subtraction, lhs, rhs) {
return lhs - rhs;
2 changes: 1 addition & 1 deletion source/Versor/SpecializedUnaryOperations.hpp
Original file line number Diff line number Diff line change
@@ -53,7 +53,7 @@ GABM_DEFINE_UNARY_OPERATION(UnaryMinus, arg) {
return -arg;
}

GABM_REPORT_THAT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)
GABM_REPORT_UNARY_OPERATION_IS_NOT_IMPLEMENTED(UnaryPlus)

GABM_DEFINE_UNARY_OPERATION(Undualization, arg) {
return arg.undual();

0 comments on commit d619805

Please sign in to comment.