tdegeus / cppmat Goto Github PK
View Code? Open in Web Editor NEW[deprecated in favour of xtensor]
Home Page: http://cppmat.geus.me
License: MIT License
[deprecated in favour of xtensor]
Home Page: http://cppmat.geus.me
License: MIT License
The initial design started out was decoupled as much as possible to allow a lot of flexibility. It is now starting to become a bit bulky.
In 11a31a9 the default pybind11 interface for vectors was introduced for all vector types. This does however not yet include bounds-checks. This needs to be done.
(The upper-bound is checked by push_back
, the lower bound is however not checked)
For example use shields.io
See Eigen
Rename classes:
Introduce bound checks using assert
.
See regular_array.h
Equip every class with:
copy(...)
to copy from (many) overloaded templates.cast<...>()
to copy to many overloaded templates. This will incorporate the assymmetric
, ... functions for the tensors.This will replace the more implicit conversion operators, which have the risk making casts (including approximations) that stay unnoticed by the user.
N.B. The conversions from tensor2d
-> tensor2
will stay as this cast is very common, and allowing this conversion actually leads to more readable code.
Implement cppmat::abs
for
cppmat::array
cppmat::matrix
cppmat::vector
cppmat::periodic::array
cppmat::periodic::matrix
cppmat::periodic::vector
cppmat::tiny::matrix
cppmat::tiny::vector
cppmat::view::matrix
cppmat::view::vector
cppmat::cartesian::tensor4
cppmat::cartesian::tensor2
cppmat::cartesian::tensor2s
cppmat::cartesian::tensor2d
cppmat::cartesian::vector
cppmat::cartesian2d::tensor4
cppmat::cartesian2d::tensor2
cppmat::cartesian2d::tensor2s
cppmat::cartesian2d::tensor2d
cppmat::cartesian2d::vector
cppmat::cartesian3d::tensor4
cppmat::cartesian3d::tensor2
cppmat::cartesian3d::tensor2s
cppmat::cartesian3d::tensor2d
cppmat::cartesian3d::vector
cppmat::view::cartesian2d::tensor4
cppmat::view::cartesian2d::tensor2
cppmat::view::cartesian2d::tensor2s
cppmat::view::cartesian2d::tensor2d
cppmat::view::cartesian2d::vector
cppmat::view::cartesian3d::tensor4
cppmat::view::cartesian3d::tensor2
cppmat::view::cartesian3d::tensor2s
cppmat::view::cartesian3d::tensor2d
cppmat::view::cartesian3d::vector
cppmat::matrix
can be used as guideline.Include copy to eigen everywhere.
Complete switching to ['Catch'])(https://github.com/philsquared/Catch) for testing. This will immediately allow to compile and run all tests at once.
Completed:
verify_matrix.cpp
Todo:
verify_tensor.cpp
verify_tensor2.cpp
verify_tensor3.cpp
Ultimately it would be good to switch to some automatic build and test system like travis CI.
Complete mixed size_t
and int
operators for 4-d, 5-d, and 6-d matrices
Increase readability of CMakelists.txt
, see https://github.com/tdegeus/ElastoPlasticQPot/blob/master/src/CMakeLists.txt
That is the real issue here really. Awesome work, and awesome documentation. You deserve alot of cred for your work ๐
#include <iostream>
template<class X, int nd=2>
class Foo
{
static_assert( nd == 2 );
private:
X data[nd];
public:
Foo() = default;
};
#include <iostream>
template<class X>
class Foo
{
private:
const expr int nd = 2;
X data[nd];
public:
Foo() = default;
};
Warning: this has some limitations, such as binding to a reference
Create .cpp
functions with the implementation, that are normally included and inlined, but can be excluded using for example a define like CPPMAT_LIBRARY
. See doctopt.cpp.
Benefits:
Introduce argmax and argmin in all modules:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.